@mindexec/cli 0.2.217 → 0.2.219

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindexec/cli",
3
- "version": "0.2.217",
3
+ "version": "0.2.219",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
@@ -209,7 +209,9 @@ body.mind-debug-video-tint-layout .css3d-resolution-wrapper.node-type-video .vid
209
209
  /* ▲▲▲ [Fix] ▲▲▲ */
210
210
 
211
211
  body.is-zooming .css3d-resolution-wrapper,
212
- body.is-panning .css3d-resolution-wrapper {
212
+ body.is-panning .css3d-resolution-wrapper,
213
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper,
214
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper {
213
215
  -webkit-transition: none !important;
214
216
  transition: none !important;
215
217
  }
@@ -217,7 +219,11 @@ body.is-panning .css3d-resolution-wrapper {
217
219
  body.is-zooming .css3d-resolution-wrapper.selected,
218
220
  body.is-panning .css3d-resolution-wrapper.selected,
219
221
  body.mindcanvas-is-moving .css3d-resolution-wrapper.selected,
220
- body.mindcanvas-is-dense .css3d-resolution-wrapper.selected {
222
+ body.mindcanvas-is-dense .css3d-resolution-wrapper.selected,
223
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper.selected,
224
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper.selected,
225
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper.selected,
226
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper.selected {
221
227
  -webkit-filter: none !important;
222
228
  filter: none !important;
223
229
  }
@@ -238,7 +244,11 @@ html.mindcanvas-platform-apple body.mindcanvas-is-dense .css3d-resolution-wrappe
238
244
  body.is-zooming .node-menu-wrapper,
239
245
  body.is-panning .node-menu-wrapper,
240
246
  body.is-zooming .map-node-memo__icon-popover,
241
- body.is-panning .map-node-memo__icon-popover {
247
+ body.is-panning .map-node-memo__icon-popover,
248
+ #css3d-dom-wrapper.is-zooming .node-menu-wrapper,
249
+ #css3d-dom-wrapper.is-panning .node-menu-wrapper,
250
+ #css3d-dom-wrapper.is-zooming .map-node-memo__icon-popover,
251
+ #css3d-dom-wrapper.is-panning .map-node-memo__icon-popover {
242
252
  -webkit-backdrop-filter: none !important;
243
253
  backdrop-filter: none !important;
244
254
  -webkit-box-shadow: none !important;
@@ -1122,6 +1132,7 @@ body.is-panning .map-node-memo__icon-popover {
1122
1132
  /* Hover raycast is already short-circuited in JS during pan, so keep CSS hover/focus
1123
1133
  intact while middle-button panning. We still suppress hit-testing for zoom/drag. */
1124
1134
  #css3d-dom-wrapper.is-dragging,
1135
+ #css3d-dom-wrapper.is-zooming,
1125
1136
  body.is-zooming #css3d-dom-wrapper {
1126
1137
  pointer-events: none !important;
1127
1138
  }
@@ -1138,6 +1149,7 @@ body.is-zooming {
1138
1149
  body.mindcanvas-browser-selection-locked *,
1139
1150
  body.is-node-dragging *,
1140
1151
  body.is-resizing *,
1152
+ #css3d-dom-wrapper.is-zooming *,
1141
1153
  body.is-zooming #css3d-dom-wrapper *,
1142
1154
  #css3d-dom-wrapper.is-panning,
1143
1155
  #css3d-dom-wrapper.is-panning *,
@@ -1163,6 +1175,8 @@ body.is-resizing .mind-map-text-overlay-v2-card,
1163
1175
  body.is-resizing .mind-map-text-overlay-v2-card *,
1164
1176
  body.is-zooming .mind-map-text-overlay.mind-map-text-overlay-selectable .mind-map-text-overlay-fragment,
1165
1177
  body.is-zooming .mind-map-text-overlay.mind-map-text-overlay-selectable .mind-map-text-overlay-fragment *,
1178
+ #css3d-dom-wrapper.is-zooming .mind-map-text-overlay.mind-map-text-overlay-selectable .mind-map-text-overlay-fragment,
1179
+ #css3d-dom-wrapper.is-zooming .mind-map-text-overlay.mind-map-text-overlay-selectable .mind-map-text-overlay-fragment *,
1166
1180
  #css3d-dom-wrapper.is-panning .mind-map-text-overlay.mind-map-text-overlay-selectable .mind-map-text-overlay-fragment,
1167
1181
  #css3d-dom-wrapper.is-panning .mind-map-text-overlay.mind-map-text-overlay-selectable .mind-map-text-overlay-fragment * {
1168
1182
  user-select: none !important;
@@ -1504,7 +1518,8 @@ html.mindcanvas-platform-apple .css3d-resolution-wrapper.is-automation-relation-
1504
1518
  pointer-events: auto;
1505
1519
  }
1506
1520
 
1507
- body.is-panning .mind-map-text-overlay-v2-card.is-passive .mind-map-text-overlay-v2-body {
1521
+ body.is-panning .mind-map-text-overlay-v2-card.is-passive .mind-map-text-overlay-v2-body,
1522
+ #css3d-dom-wrapper.is-panning .mind-map-text-overlay-v2-card.is-passive .mind-map-text-overlay-v2-body {
1508
1523
  pointer-events: none !important;
1509
1524
  }
1510
1525
 
@@ -2445,6 +2460,9 @@ body.is-panning .mind-map-text-overlay-v2-card.is-passive .mind-map-text-overlay
2445
2460
  body.is-panning .css3d-resolution-wrapper.node-type-templatelauncher.selected,
2446
2461
  body.is-zooming .css3d-resolution-wrapper.node-type-templatelauncher.selected,
2447
2462
  body.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-templatelauncher.selected,
2463
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper.node-type-templatelauncher.selected,
2464
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper.node-type-templatelauncher.selected,
2465
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-templatelauncher.selected,
2448
2466
  body.mindcanvas-is-dense .css3d-resolution-wrapper.node-type-templatelauncher.selected {
2449
2467
  outline: none !important;
2450
2468
  -webkit-box-shadow: none !important;
@@ -3340,7 +3358,11 @@ body.is-panning .css3d-resolution-wrapper,
3340
3358
  body.is-node-dragging .css3d-resolution-wrapper,
3341
3359
  body.is-resizing .css3d-resolution-wrapper,
3342
3360
  body.mindcanvas-is-moving .css3d-resolution-wrapper,
3343
- body.mindcanvas-is-dense .css3d-resolution-wrapper {
3361
+ body.mindcanvas-is-dense .css3d-resolution-wrapper,
3362
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper,
3363
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper,
3364
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper,
3365
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper {
3344
3366
  -webkit-transition: none !important;
3345
3367
  transition: none !important;
3346
3368
  -webkit-filter: none !important;
@@ -3360,7 +3382,15 @@ body.is-panning .css3d-resolution-wrapper [id^="css3d-node-"],
3360
3382
  body.is-node-dragging .css3d-resolution-wrapper [id^="css3d-node-"],
3361
3383
  body.is-resizing .css3d-resolution-wrapper [id^="css3d-node-"],
3362
3384
  body.mindcanvas-is-moving .css3d-resolution-wrapper [id^="css3d-node-"],
3363
- body.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"] {
3385
+ body.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"],
3386
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper .css3d-dynamic-node,
3387
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper .css3d-dynamic-node,
3388
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper .css3d-dynamic-node,
3389
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper .css3d-dynamic-node,
3390
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper [id^="css3d-node-"],
3391
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper [id^="css3d-node-"],
3392
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper [id^="css3d-node-"],
3393
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"] {
3364
3394
  -webkit-transition: none !important;
3365
3395
  transition: none !important;
3366
3396
  -webkit-filter: none !important;
@@ -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 = '20260617-flow-run-hitfix-v586';
8
+ const MINDMAP_CORE_BUILD_ID = '20260619-ua-immediate-camera-v629';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -94,7 +94,7 @@ const MINDMAP_CORE_BUILD_ID = '20260617-flow-run-hitfix-v586';
94
94
  const VISIBILITY_CULLING_ZOOM_HEAVY_FRAME_INTERVAL = 10;
95
95
  const FULL_RES_VISIBILITY_CULLING_PAN_FRAME_INTERVAL = 10;
96
96
  const FULL_RES_VISIBILITY_EXIT_MARGIN_SCALE = 1.8;
97
- const CAMERA_MOTION_WEBGL_FRAME_INTERVAL = 4;
97
+ const CAMERA_MOTION_WEBGL_FRAME_INTERVAL = 10;
98
98
  const PIPELINE_PROFILE_SECTION_KEYS = Object.freeze([
99
99
  'pipelineViewport',
100
100
  'pipelineScheduling',
@@ -107,8 +107,8 @@ const MINDMAP_CORE_BUILD_ID = '20260617-flow-run-hitfix-v586';
107
107
  const FULL_RES_LOD_PAN_REFRESH_INTERVAL_MS = 96;
108
108
  const FULL_RES_LOD_ZOOM_REFRESH_INTERVAL_MS = 48;
109
109
  const CAMERA_LERP_BASE_FRAME_MS = 1000 / 60;
110
- const CAMERA_KEYBOARD_PAN_LERP_60HZ = 0.25;
111
- const CAMERA_MOUSE_PAN_LERP_60HZ = 0.25;
110
+ const CAMERA_KEYBOARD_PAN_LERP_60HZ = 1.0;
111
+ const CAMERA_MOUSE_PAN_LERP_60HZ = 1.0;
112
112
  const NODE_ADD_FRAME_BUDGET_MS = 6;
113
113
  const NODE_ADD_LOADING_FRAME_BUDGET_MS = 8;
114
114
  const NODE_ADD_MIN_SLICE = 8;
@@ -368,7 +368,8 @@ const MINDMAP_CORE_BUILD_ID = '20260617-flow-run-hitfix-v586';
368
368
 
369
369
  const _mindCanvasPerfClassState = {
370
370
  moving: false,
371
- dense: false
371
+ dense: false,
372
+ target: null
372
373
  };
373
374
  const _renderDebugBodyClassState = {
374
375
  hideVideoSurfaceInNear: false,
@@ -381,13 +382,21 @@ const MINDMAP_CORE_BUILD_ID = '20260617-flow-run-hitfix-v586';
381
382
  return;
382
383
  }
383
384
 
385
+ const targetElement = moduleInstance?.cssRenderer?.domElement || document.body;
386
+ if (_mindCanvasPerfClassState.target && _mindCanvasPerfClassState.target !== targetElement) {
387
+ _mindCanvasPerfClassState.target.classList?.remove?.('mindcanvas-is-moving', 'mindcanvas-is-dense');
388
+ _mindCanvasPerfClassState.moving = false;
389
+ _mindCanvasPerfClassState.dense = false;
390
+ }
391
+ _mindCanvasPerfClassState.target = targetElement;
392
+
384
393
  if (_mindCanvasPerfClassState.moving !== moving) {
385
- document.body.classList.toggle('mindcanvas-is-moving', moving);
394
+ targetElement.classList.toggle('mindcanvas-is-moving', moving);
386
395
  _mindCanvasPerfClassState.moving = moving;
387
396
  }
388
397
 
389
398
  if (_mindCanvasPerfClassState.dense !== dense) {
390
- document.body.classList.toggle('mindcanvas-is-dense', dense);
399
+ targetElement.classList.toggle('mindcanvas-is-dense', dense);
391
400
  _mindCanvasPerfClassState.dense = dense;
392
401
  }
393
402
  }
@@ -4457,6 +4466,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4457
4466
  if (this.isZooming && !isCameraMoving && timeSinceLastInput > ZOOM_END_DELAY_MS) {
4458
4467
  this.isZooming = false;
4459
4468
  document.body.classList.remove('is-zooming');
4469
+ this.cssRenderer?.domElement?.classList?.remove?.('is-zooming');
4460
4470
  if (FRAME_PERF_DEBUG) {
4461
4471
  console.log(`[Perf] Zoom ended (${timeSinceLastInput.toFixed(0)}ms since last input)`);
4462
4472
  }
@@ -4639,13 +4649,21 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4639
4649
  !isNodeInteracting &&
4640
4650
  !hasNonPanForcedUpdate &&
4641
4651
  !hasPendingNearCssWarmup;
4642
- const movingUpdateDue = isCameraMoving && (
4643
- !isLodModeActive ||
4644
- (
4645
- !residentMidFarStable &&
4646
- (this.frameCount % (this.isZooming ? 12 : 8) === 0)
4647
- )
4648
- );
4652
+ const shouldPreferCameraOnlyMotionPipeline =
4653
+ isCameraMoving === true &&
4654
+ !isNodeInteracting &&
4655
+ !hasNonCameraNavigationForcedUpdate &&
4656
+ !hasPendingNearCssWarmup &&
4657
+ !this.isWindowResizing;
4658
+ const movingUpdateDue = shouldPreferCameraOnlyMotionPipeline === true
4659
+ ? false
4660
+ : isCameraMoving && (
4661
+ !isLodModeActive ||
4662
+ (
4663
+ !residentMidFarStable &&
4664
+ (this.frameCount % (this.isZooming ? 12 : 8) === 0)
4665
+ )
4666
+ );
4649
4667
  const idleUpdateDue = false;
4650
4668
  const isLodPanVisibilityRefreshDue =
4651
4669
  !isResidentMidFarLodFrame &&
@@ -4682,6 +4700,142 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4682
4700
  const useTextOverlayV2 = !isBoardLoading && this.useTextOverlayV2 === true && !!window.MindMapTextOverlayV2;
4683
4701
  const renderDebugFlags = activeRenderDebugFlags;
4684
4702
  const isCss3dEnabled = !isBoardLoading && renderDebugFlags.enableCss3d !== false;
4703
+
4704
+ const hasKnownTextOverlayFocus = !!(
4705
+ String(this._textOverlayV2State?.selectionNodeId || '').trim() ||
4706
+ String(this._textOverlayV2State?.editing?.nodeId || '').trim() ||
4707
+ String(this._selectableTextOverlayNodeId || '').trim() ||
4708
+ String(this._editingOverlayState?.nodeId || '').trim()
4709
+ );
4710
+ const hasPendingCss3dTransformWork = !!(
4711
+ (this._cssTransformDirtyIds?.size || 0) > 0 ||
4712
+ this._cssParentRepairNeeded === true ||
4713
+ this._css3dVisualChangedThisFrame === true ||
4714
+ this._css3dVisualChangedSinceLastRender === true
4715
+ );
4716
+ const canUseUaImmediateCameraOnlyFrame = !!(
4717
+ shouldPreferCameraOnlyMotionPipeline === true &&
4718
+ isCss3dEnabled === true &&
4719
+ !!this.cssRenderer &&
4720
+ typeof this.cssRenderer.renderCamera === 'function' &&
4721
+ isLodModeActive !== true &&
4722
+ isCameraMoving === true &&
4723
+ this.isSelecting !== true &&
4724
+ !hasKnownTextOverlayFocus &&
4725
+ !hasPendingCss3dTransformWork &&
4726
+ !isBoardLoading
4727
+ );
4728
+ if (canUseUaImmediateCameraOnlyFrame) {
4729
+ this._fullResMotionFrozen = true;
4730
+ this._wasViewStateMotionFrozenLastFrame = true;
4731
+ this._wasLodMotionFrozenLastFrame = false;
4732
+ this._fullResVisibilityReconcilePending = true;
4733
+ this._preserveVisibleSetThisFrame = true;
4734
+ this._lastVisibilityCullingSkipReason = 'ua-immediate-camera-only';
4735
+ if (this._businessAutomationEdgeVisualLayer?.isConnected ||
4736
+ this._businessAutomationEdgeLayer?.isConnected) {
4737
+ this._businessAutomationEdgesDeferredForMotion = true;
4738
+ }
4739
+ if (this._overlayDirty === true) {
4740
+ this._deferPassiveOverlayRefresh = true;
4741
+ }
4742
+
4743
+ const approxVisibleNodeCountImmediate = Number(this._visibleIds?.size || this._prevVisibleIds?.size || 0);
4744
+ const totalNodeCountImmediate = Number(this.nodeObjectsById?.size || 0);
4745
+ syncMindCanvasPerfClasses({
4746
+ moving: true,
4747
+ dense:
4748
+ approxVisibleNodeCountImmediate >= DENSE_VISIBLE_NODE_THRESHOLD ||
4749
+ totalNodeCountImmediate >= DENSE_TOTAL_NODE_THRESHOLD
4750
+ });
4751
+
4752
+ if ((this.frameCount % CAMERA_MOTION_WEBGL_FRAME_INTERVAL) === 0) {
4753
+ updateCursorDomElement(this);
4754
+ if (renderDebugFlags.enableWebglRender !== false && this.renderer && this.scene && this.camera) {
4755
+ this.renderer.render(this.scene, this.camera);
4756
+ const renderInfo = this.renderer?.info?.render || null;
4757
+ this._lastWebglRenderInfo = renderInfo ? {
4758
+ calls: Number(renderInfo.calls || 0),
4759
+ triangles: Number(renderInfo.triangles || 0),
4760
+ points: Number(renderInfo.points || 0),
4761
+ lines: Number(renderInfo.lines || 0),
4762
+ uaImmediateCameraOnly: true
4763
+ } : null;
4764
+ }
4765
+ } else if (renderDebugFlags.enableWebglRender !== false) {
4766
+ this._lastWebglRenderInfo = {
4767
+ calls: 0,
4768
+ triangles: 0,
4769
+ points: 0,
4770
+ lines: 0,
4771
+ skipped: true,
4772
+ uaImmediateCameraOnly: true
4773
+ };
4774
+ }
4775
+
4776
+ this.cssRenderer.renderCamera(this.camera);
4777
+ _profileSection('uaImmediateCameraOnly');
4778
+
4779
+ const frameEnd = performance.now();
4780
+ const frameDuration = frameEnd - frameStart;
4781
+ this._lastFrameDurationMs = frameDuration;
4782
+ this._lastFrameMetricsAt = frameEnd;
4783
+ if (shouldCaptureFramePerf) {
4784
+ const sectionTimes = {};
4785
+ Object.entries(_frameProfTimes)
4786
+ .filter(([key, value]) => key !== 'visibleNodes' && typeof value === 'number')
4787
+ .forEach(([key, value]) => {
4788
+ sectionTimes[key] = Number(value.toFixed(2));
4789
+ });
4790
+ this._lastFramePerfProfile = {
4791
+ durationMs: Number(frameDuration.toFixed(2)),
4792
+ update: false,
4793
+ cameraZ: Number((this.camera?.position?.z || 0).toFixed(2)),
4794
+ isZooming: this.isZooming === true,
4795
+ isPanning: this.isPanning === true,
4796
+ isCameraMoving: true,
4797
+ isInLodMode: false,
4798
+ lodBand: this.lodRenderer?._currentLodBand || null,
4799
+ visibleNodes: approxVisibleNodeCountImmediate,
4800
+ freezeVisibility: true,
4801
+ freezeLod: false,
4802
+ freezeFullRes: true,
4803
+ residentMidFarStable: false,
4804
+ residentDirty: false,
4805
+ residentBandChanging: false,
4806
+ viewSyncMode: 'ua-immediate-camera-only',
4807
+ lodUpdateCalled: false,
4808
+ lodUpdateSkipped: true,
4809
+ lodUpdateSkipReason: 'ua-immediate-camera-only',
4810
+ lodSkipReason: '',
4811
+ lodDirtyReason: '',
4812
+ lodDirtyState: null,
4813
+ viewSyncBreakdown: null,
4814
+ shouldRunVisibilityCulling: false,
4815
+ visibilityStableSkip: true,
4816
+ visibilitySkipReason: 'ua-immediate-camera-only',
4817
+ incrementalPanVisibility: false,
4818
+ shouldSyncCss3dTransforms: false,
4819
+ shouldRenderCss3d: false,
4820
+ usedCss3dCameraFastPath: true,
4821
+ uaImmediateCameraOnly: true,
4822
+ shouldSyncTextOverlays: false,
4823
+ usedPassiveOverlayCameraFastPath: false,
4824
+ passiveOverlaySuppressed: this._suppressPassiveDomOverlayDuringZoom === true,
4825
+ webgl: this._lastWebglRenderInfo || null,
4826
+ sections: sectionTimes
4827
+ };
4828
+ updateFramePerfPeakProfile(this, this._lastFramePerfProfile, frameEnd);
4829
+ } else if (this._lastFramePerfProfile) {
4830
+ this._lastFramePerfProfile = null;
4831
+ }
4832
+
4833
+ this._lastAnimationLoopDelayMs = 0;
4834
+ this._animationLoopExecuting = false;
4835
+ this._scheduleAnimationLoop(loop, 0);
4836
+ return;
4837
+ }
4838
+
4685
4839
  const isCss3dTransformSyncEnabled = isCss3dEnabled && renderDebugFlags.enableCss3dTransformSync !== false;
4686
4840
  const isVisibilityCullingEnabled = renderDebugFlags.enableVisibilityCulling !== false;
4687
4841
  const isLodUpdateEnabled = renderDebugFlags.enableLodUpdate !== false;
@@ -4728,6 +4882,130 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4728
4882
  _profileSection('pipelineOverlayPlan');
4729
4883
  const hasFocusedTextOverlay = !!selectableOverlayNodeId;
4730
4884
  const hasEditingOverlay = !!editingOverlayNodeId;
4885
+ const isUaStyleCameraTransformFrame =
4886
+ shouldPreferCameraOnlyMotionPipeline === true &&
4887
+ isCss3dEnabled === true &&
4888
+ !!this.cssRenderer &&
4889
+ !hasFocusedTextOverlay &&
4890
+ !hasEditingOverlay;
4891
+ const canUseUaEarlyCameraOnlyFrame = !!(
4892
+ isUaStyleCameraTransformFrame === true &&
4893
+ isFullResMode === true &&
4894
+ isResidentMidFarLodFrame !== true &&
4895
+ isCameraMoving === true &&
4896
+ this.isSelecting !== true &&
4897
+ typeof this.cssRenderer.renderCamera === 'function' &&
4898
+ this._css3dVisualChangedThisFrame !== true &&
4899
+ this._css3dVisualChangedSinceLastRender !== true
4900
+ );
4901
+ if (canUseUaEarlyCameraOnlyFrame) {
4902
+ this._fullResMotionFrozen = true;
4903
+ this._wasViewStateMotionFrozenLastFrame = true;
4904
+ this._wasLodMotionFrozenLastFrame = false;
4905
+ this._fullResVisibilityReconcilePending = true;
4906
+ this._preserveVisibleSetThisFrame = true;
4907
+ this._lastVisibilityCullingSkipReason = 'ua-early-camera-only';
4908
+ if (this._businessAutomationEdgeVisualLayer?.isConnected ||
4909
+ this._businessAutomationEdgeLayer?.isConnected) {
4910
+ this._businessAutomationEdgesDeferredForMotion = true;
4911
+ }
4912
+
4913
+ const approxVisibleNodeCountEarly = Number(this._visibleIds?.size || this._prevVisibleIds?.size || 0);
4914
+ const totalNodeCountEarly = Number(this.nodeObjectsById?.size || 0);
4915
+ syncMindCanvasPerfClasses({
4916
+ moving: true,
4917
+ dense:
4918
+ approxVisibleNodeCountEarly >= DENSE_VISIBLE_NODE_THRESHOLD ||
4919
+ totalNodeCountEarly >= DENSE_TOTAL_NODE_THRESHOLD
4920
+ });
4921
+
4922
+ if ((this.frameCount % CAMERA_MOTION_WEBGL_FRAME_INTERVAL) === 0) {
4923
+ updateCursorDomElement(this);
4924
+ if (isWebglRenderEnabled && this.renderer && this.scene && this.camera) {
4925
+ this.renderer.render(this.scene, this.camera);
4926
+ const renderInfo = this.renderer?.info?.render || null;
4927
+ this._lastWebglRenderInfo = renderInfo ? {
4928
+ calls: Number(renderInfo.calls || 0),
4929
+ triangles: Number(renderInfo.triangles || 0),
4930
+ points: Number(renderInfo.points || 0),
4931
+ lines: Number(renderInfo.lines || 0),
4932
+ uaEarlyCameraOnly: true
4933
+ } : null;
4934
+ }
4935
+ } else if (isWebglRenderEnabled) {
4936
+ this._lastWebglRenderInfo = {
4937
+ calls: 0,
4938
+ triangles: 0,
4939
+ points: 0,
4940
+ lines: 0,
4941
+ skipped: true,
4942
+ uaEarlyCameraOnly: true
4943
+ };
4944
+ }
4945
+
4946
+ this.cssRenderer.renderCamera(this.camera);
4947
+ _profileSection('uaEarlyCameraOnly');
4948
+
4949
+ const frameEnd = performance.now();
4950
+ const frameDuration = frameEnd - frameStart;
4951
+ this._lastFrameDurationMs = frameDuration;
4952
+ this._lastFrameMetricsAt = frameEnd;
4953
+
4954
+ if (shouldCaptureFramePerf) {
4955
+ const sectionTimes = {};
4956
+ Object.entries(_frameProfTimes)
4957
+ .filter(([key, value]) => key !== 'visibleNodes' && typeof value === 'number')
4958
+ .forEach(([key, value]) => {
4959
+ sectionTimes[key] = Number(value.toFixed(2));
4960
+ });
4961
+ this._lastFramePerfProfile = {
4962
+ durationMs: Number(frameDuration.toFixed(2)),
4963
+ update: false,
4964
+ cameraZ: Number((this.camera?.position?.z || 0).toFixed(2)),
4965
+ isZooming: this.isZooming === true,
4966
+ isPanning: this.isPanning === true,
4967
+ isCameraMoving: true,
4968
+ isInLodMode: false,
4969
+ lodBand: this.lodRenderer?._currentLodBand || null,
4970
+ visibleNodes: approxVisibleNodeCountEarly,
4971
+ freezeVisibility: true,
4972
+ freezeLod: false,
4973
+ freezeFullRes: true,
4974
+ residentMidFarStable: false,
4975
+ residentDirty: false,
4976
+ residentBandChanging: false,
4977
+ viewSyncMode: 'ua-early-camera-only',
4978
+ lodUpdateCalled: false,
4979
+ lodUpdateSkipped: true,
4980
+ lodUpdateSkipReason: 'ua-early-camera-only',
4981
+ lodSkipReason: '',
4982
+ lodDirtyReason: '',
4983
+ lodDirtyState: null,
4984
+ viewSyncBreakdown: null,
4985
+ shouldRunVisibilityCulling: false,
4986
+ visibilityStableSkip: true,
4987
+ visibilitySkipReason: 'ua-early-camera-only',
4988
+ incrementalPanVisibility: false,
4989
+ shouldSyncCss3dTransforms: false,
4990
+ shouldRenderCss3d: false,
4991
+ usedCss3dCameraFastPath: true,
4992
+ uaEarlyCameraOnly: true,
4993
+ shouldSyncTextOverlays: false,
4994
+ usedPassiveOverlayCameraFastPath: false,
4995
+ passiveOverlaySuppressed: this._suppressPassiveDomOverlayDuringZoom === true,
4996
+ webgl: this._lastWebglRenderInfo || null,
4997
+ sections: sectionTimes
4998
+ };
4999
+ updateFramePerfPeakProfile(this, this._lastFramePerfProfile, frameEnd);
5000
+ } else if (this._lastFramePerfProfile) {
5001
+ this._lastFramePerfProfile = null;
5002
+ }
5003
+
5004
+ this._lastAnimationLoopDelayMs = 0;
5005
+ this._animationLoopExecuting = false;
5006
+ this._scheduleAnimationLoop(loop, 0);
5007
+ return;
5008
+ }
4731
5009
  const isMotionFreezeEligible =
4732
5010
  (this.isZooming === true || this.isPanning === true || isCameraMoving === true) &&
4733
5011
  !isNodeInteracting &&
@@ -4774,6 +5052,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4774
5052
  !hasFocusedTextOverlay &&
4775
5053
  !hasEditingOverlay &&
4776
5054
  (
5055
+ isUaStyleCameraTransformFrame === true ||
4777
5056
  renderDebugFlags.freezeVisibilityDuringMotion === true ||
4778
5057
  isHeavyFullResScene
4779
5058
  );
@@ -4892,7 +5171,14 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
4892
5171
  hasForcedUpdate === true ||
4893
5172
  hasPendingNearCssWarmup === true
4894
5173
  );
4895
- const shouldUpdateCss3d = shouldUpdate || shouldUpdateResidentCssMediaFallback;
5174
+ const shouldUseCss3dCameraTransformFrame =
5175
+ shouldPreferCameraOnlyMotionPipeline === true &&
5176
+ isCss3dEnabled === true &&
5177
+ !!this.cssRenderer;
5178
+ const shouldUpdateCss3d =
5179
+ shouldUpdate ||
5180
+ shouldUpdateResidentCssMediaFallback ||
5181
+ shouldUseCss3dCameraTransformFrame;
4896
5182
  const prevVisibilityVersion = Number(this._visibilityVersion || 0);
4897
5183
  const prevLodVisualEpoch = Number(this.lodRenderer?._lodVisualEpoch || 0);
4898
5184
  this._css3dVisualChangedThisFrame = false;
@@ -5247,7 +5533,6 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5247
5533
  (isThemeAnimationEnabled || shouldForceGpuParticleAnimation) &&
5248
5534
  this.currentThemeObject &&
5249
5535
  typeof this.currentThemeObject.animate === 'function') {
5250
- const themeAnimationInterval = this._getThemeAnimationInterval(isInteractiveFrame, themeAnimationMode);
5251
5536
  const forceThemeCameraUpdate =
5252
5537
  hasNonCameraNavigationForcedUpdate === true ||
5253
5538
  zoomEndedThisFrame === true ||
@@ -5255,10 +5540,15 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5255
5540
  cameraEndedThisFrame === true ||
5256
5541
  resizeEndedThisFrame === true ||
5257
5542
  this._forceThemeAnimationFrame === true;
5543
+ const themeAnimationInterval = this._getThemeAnimationInterval(isInteractiveFrame, themeAnimationMode);
5544
+ const effectiveThemeAnimationInterval =
5545
+ isPureCss3dCameraMotionFrame === true && forceThemeCameraUpdate !== true
5546
+ ? Math.max(themeAnimationInterval, CAMERA_MOTION_WEBGL_FRAME_INTERVAL)
5547
+ : themeAnimationInterval;
5258
5548
  const shouldCheckThemeAnimation =
5259
5549
  forceThemeCameraUpdate ||
5260
- themeAnimationInterval <= 1 ||
5261
- (this.frameCount % themeAnimationInterval === 0);
5550
+ effectiveThemeAnimationInterval <= 1 ||
5551
+ (this.frameCount % effectiveThemeAnimationInterval === 0);
5262
5552
 
5263
5553
  if (shouldCheckThemeAnimation) {
5264
5554
  const themeRunner = window.MindMapThemes?.runAnimationIfNeeded;
@@ -5458,7 +5748,7 @@ ${summaryLines.map(line => `<div>${escapeNodeFrameDebugHtml(line)}</div>`).join(
5458
5748
  const shouldDeferFloatingUiDuringMotion =
5459
5749
  (this.isPanning === true || this.isZooming === true || isCameraMoving === true) &&
5460
5750
  !isNodeInteracting &&
5461
- !hasForcedUpdate &&
5751
+ !hasNonCameraNavigationForcedUpdate &&
5462
5752
  !hasOverlayFocus &&
5463
5753
  !this.isWindowResizing;
5464
5754
  if (isMenuOverlayUiEnabled && window.MindMapMenuManager && shouldDeferFloatingUiDuringMotion !== true) {
@@ -830,7 +830,11 @@
830
830
  body.is-zooming .css3d-resolution-wrapper,
831
831
  body.is-panning .css3d-resolution-wrapper,
832
832
  body.mindcanvas-is-moving .css3d-resolution-wrapper,
833
- body.mindcanvas-is-dense .css3d-resolution-wrapper {
833
+ body.mindcanvas-is-dense .css3d-resolution-wrapper,
834
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper,
835
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper,
836
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper,
837
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper {
834
838
  transition: none !important;
835
839
  -webkit-transition: none !important;
836
840
  filter: none !important;
@@ -844,7 +848,15 @@
844
848
  body.is-zooming .css3d-resolution-wrapper [id^="css3d-node-"],
845
849
  body.is-panning .css3d-resolution-wrapper [id^="css3d-node-"],
846
850
  body.mindcanvas-is-moving .css3d-resolution-wrapper [id^="css3d-node-"],
847
- body.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"] {
851
+ body.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"],
852
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper .css3d-dynamic-node,
853
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper .css3d-dynamic-node,
854
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper .css3d-dynamic-node,
855
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper .css3d-dynamic-node,
856
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper [id^="css3d-node-"],
857
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper [id^="css3d-node-"],
858
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper [id^="css3d-node-"],
859
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper [id^="css3d-node-"] {
848
860
  box-shadow: none !important;
849
861
  filter: none !important;
850
862
  -webkit-filter: none !important;
@@ -858,6 +870,12 @@
858
870
  body.is-zooming .embed-card *,
859
871
  body.is-zooming .embed-action,
860
872
  body.is-zooming .embed-play-button,
873
+ #css3d-dom-wrapper.is-zooming .embed-content iframe,
874
+ #css3d-dom-wrapper.is-zooming .embed-iframe-host iframe,
875
+ #css3d-dom-wrapper.is-zooming .embed-card,
876
+ #css3d-dom-wrapper.is-zooming .embed-card *,
877
+ #css3d-dom-wrapper.is-zooming .embed-action,
878
+ #css3d-dom-wrapper.is-zooming .embed-play-button,
861
879
  body.is-panning .embed-content iframe,
862
880
  body.is-panning .embed-iframe-host iframe,
863
881
  body.is-panning .embed-card,
@@ -876,6 +894,12 @@
876
894
  body.mindcanvas-is-moving .embed-card *,
877
895
  body.mindcanvas-is-moving .embed-action,
878
896
  body.mindcanvas-is-moving .embed-play-button,
897
+ #css3d-dom-wrapper.mindcanvas-is-moving .embed-content iframe,
898
+ #css3d-dom-wrapper.mindcanvas-is-moving .embed-iframe-host iframe,
899
+ #css3d-dom-wrapper.mindcanvas-is-moving .embed-card,
900
+ #css3d-dom-wrapper.mindcanvas-is-moving .embed-card *,
901
+ #css3d-dom-wrapper.mindcanvas-is-moving .embed-action,
902
+ #css3d-dom-wrapper.mindcanvas-is-moving .embed-play-button,
879
903
  .is-dragging .embed-content iframe,
880
904
  .is-dragging .embed-iframe-host iframe,
881
905
  .is-dragging .embed-card,
@@ -908,12 +932,16 @@
908
932
 
909
933
  body.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
910
934
  body.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
935
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
936
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
911
937
  body.is-panning .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
912
938
  body.is-panning .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
913
939
  body.is-node-dragging .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
914
940
  body.is-node-dragging .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
915
941
  body.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
916
942
  body.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
943
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
944
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
917
945
  .is-dragging .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
918
946
  .is-dragging .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host iframe,
919
947
  .is-panning .css3d-resolution-wrapper.node-type-embed .embed-content[data-iframe-interacting="true"] .embed-iframe-host,
@@ -928,7 +956,15 @@
928
956
  body.is-zooming .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
929
957
  body.is-panning .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
930
958
  body.mindcanvas-is-moving .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
931
- body.mindcanvas-is-dense .css3d-resolution-wrapper .map-node-memo__agent-console-panel {
959
+ body.mindcanvas-is-dense .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
960
+ #css3d-dom-wrapper.is-zooming .ai-loading-row.ai-loading-row-media,
961
+ #css3d-dom-wrapper.is-panning .ai-loading-row.ai-loading-row-media,
962
+ #css3d-dom-wrapper.mindcanvas-is-moving .ai-loading-row.ai-loading-row-media,
963
+ #css3d-dom-wrapper.mindcanvas-is-dense .ai-loading-row.ai-loading-row-media,
964
+ #css3d-dom-wrapper.is-zooming .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
965
+ #css3d-dom-wrapper.is-panning .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
966
+ #css3d-dom-wrapper.mindcanvas-is-moving .css3d-resolution-wrapper .map-node-memo__agent-console-panel,
967
+ #css3d-dom-wrapper.mindcanvas-is-dense .css3d-resolution-wrapper .map-node-memo__agent-console-panel {
932
968
  box-shadow: none !important;
933
969
  backdrop-filter: none !important;
934
970
  -webkit-backdrop-filter: none !important;
@@ -25,11 +25,14 @@ window.MindMapInteractions = (function () {
25
25
 
26
26
  function isBrowserSelectionLocked() {
27
27
  const body = document?.body;
28
+ const css3dWrapper = document?.getElementById?.('css3d-dom-wrapper');
28
29
  return browserSelectionLockReasons.size > 0 ||
29
30
  body?.classList?.contains?.(BROWSER_SELECTION_LOCK_CLASS) === true ||
30
31
  body?.classList?.contains?.('is-node-dragging') === true ||
31
32
  body?.classList?.contains?.('is-panning') === true ||
32
- body?.classList?.contains?.('is-zooming') === true;
33
+ body?.classList?.contains?.('is-zooming') === true ||
34
+ css3dWrapper?.classList?.contains?.('is-panning') === true ||
35
+ css3dWrapper?.classList?.contains?.('is-zooming') === true;
33
36
  }
34
37
 
35
38
  function handleBrowserSelectStart(event) {
@@ -103,14 +106,16 @@ window.MindMapInteractions = (function () {
103
106
  clearModuleTimer(module, '_zoomMotionChromeTimer');
104
107
  module._zoomMotionChromeTimer = setTimeout(() => {
105
108
  module._zoomMotionChromeTimer = null;
109
+ const targetElement = module?.cssRenderer?.domElement || document.body;
106
110
  if (module.isZooming === true) {
107
- document.body.classList.add('is-zooming');
111
+ targetElement.classList.add('is-zooming');
108
112
  }
109
113
  }, MOTION_DOM_FANOUT_DELAY_MS);
110
114
  }
111
115
 
112
116
  function clearZoomMotionChrome(module) {
113
117
  clearModuleTimer(module, '_zoomMotionChromeTimer');
118
+ module?.cssRenderer?.domElement?.classList?.remove?.('is-zooming');
114
119
  document?.body?.classList?.remove?.('is-zooming');
115
120
  }
116
121
 
@@ -545,6 +550,10 @@ window.MindMapInteractions = (function () {
545
550
  Number(module._panLiveRefreshForceFrames || 0),
546
551
  PAN_LIVE_REFRESH_FORCE_FRAMES
547
552
  );
553
+ module._cameraNavigationForceFrames = Math.max(
554
+ Number(module._cameraNavigationForceFrames || 0),
555
+ PAN_LIVE_REFRESH_FORCE_FRAMES
556
+ );
548
557
  }
549
558
 
550
559
  function isEditableElement(element) {
@@ -6173,12 +6182,12 @@ window.MindMapInteractions = (function () {
6173
6182
  const panFactor = TRACKPAD_PAN_SENSITIVITY * module.camera.position.z;
6174
6183
  module.targetX += normalizedDeltaX * panFactor;
6175
6184
  module.targetY -= normalizedDeltaY * panFactor;
6176
- module._lastPanInputAt = performance.now();
6185
+ const panInputAt = performance.now();
6186
+ module._lastPanInputAt = panInputAt;
6177
6187
  module._forceUpdateFrames = Math.max(module._forceUpdateFrames || 0, 2);
6178
6188
  module._cameraNavigationForceFrames = Math.max(module._cameraNavigationForceFrames || 0, 2);
6179
- module._deferPassiveOverlayRefresh = false;
6180
- module._overlayDirty = true;
6181
- window.MindMapTextOverlayV2?.invalidateView?.(module);
6189
+ module._deferPassiveOverlayRefresh = true;
6190
+ module._cameraNavigationOverlayInputTime = panInputAt;
6182
6191
 
6183
6192
  if (module.isSelecting) {
6184
6193
  updateSelectionBox(module);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mainAssemblyName": "MindExecution.Web",
3
3
  "resources": {
4
- "hash": "sha256-ZAwNpPs3onBC9rgkcEK4JTXupWIi3Eni5koql7ccxZE=",
4
+ "hash": "sha256-C14SRmNCNlcZMo3O4WOxEp+F4umSN9ZKYxynTWkcAwc=",
5
5
  "fingerprinting": {
6
6
  "Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
7
7
  "Markdig.d1j7v41cl1.dll": "Markdig.dll",
@@ -123,15 +123,15 @@
123
123
  "System.brmz7yk5qh.dll": "System.dll",
124
124
  "netstandard.yvr3prsx0x.dll": "netstandard.dll",
125
125
  "System.Private.CoreLib.c1dbswx1b2.dll": "System.Private.CoreLib.dll",
126
- "MindExecution.Core.21gc0645uz.dll": "MindExecution.Core.dll",
126
+ "MindExecution.Core.c9wgwsw9z6.dll": "MindExecution.Core.dll",
127
127
  "MindExecution.Kernel.n80deqs1y7.dll": "MindExecution.Kernel.dll",
128
128
  "MindExecution.Plugins.Admin.29mytzdaun.dll": "MindExecution.Plugins.Admin.dll",
129
- "MindExecution.Plugins.Business.asckvekct8.dll": "MindExecution.Plugins.Business.dll",
129
+ "MindExecution.Plugins.Business.g8txk1zzic.dll": "MindExecution.Plugins.Business.dll",
130
130
  "MindExecution.Plugins.Concept.u9kzsgf64o.dll": "MindExecution.Plugins.Concept.dll",
131
131
  "MindExecution.Plugins.Directory.k4hx7g84qs.dll": "MindExecution.Plugins.Directory.dll",
132
132
  "MindExecution.Plugins.PlanMaster.kibqg6rvqh.dll": "MindExecution.Plugins.PlanMaster.dll",
133
133
  "MindExecution.Plugins.YouTube.089r64n2hv.dll": "MindExecution.Plugins.YouTube.dll",
134
- "MindExecution.Shared.tlbhl3vzry.dll": "MindExecution.Shared.dll",
134
+ "MindExecution.Shared.tbutfszqeu.dll": "MindExecution.Shared.dll",
135
135
  "MindExecution.Web.7axuoygrwi.dll": "MindExecution.Web.dll",
136
136
  "dotnet.js": "dotnet.js",
137
137
  "dotnet.native.qc8g39g30v.js": "dotnet.native.js",
@@ -278,12 +278,12 @@
278
278
  "System.Xml.XDocument.sn51jas17n.dll": "sha256-GNI2kFgFmPTwzuzwUn8gxK+AzGLUWRJFdg9JzIbrybQ=",
279
279
  "System.brmz7yk5qh.dll": "sha256-CfM2miyj1KHApFmqMdLYWio3S/jrdON2pW9Xr2nTwlo=",
280
280
  "netstandard.yvr3prsx0x.dll": "sha256-EksNn8Luo4bOWqJ6X7dIe9qG9oOqwOVzjH2xYyMNi+E=",
281
- "MindExecution.Core.21gc0645uz.dll": "sha256-2ssZ+cC0K4aW0R8wQHa8JzS1UlYMabFvA3aVK+CH1Ek=",
281
+ "MindExecution.Core.c9wgwsw9z6.dll": "sha256-sKjYj7JohRjgfg3dzKO5QZcmLGIJsWao1ASfKpZyRWI=",
282
282
  "MindExecution.Kernel.n80deqs1y7.dll": "sha256-d7gGGpxiQNphs0at1uO1fAmYe28MFNVgGTEqxoM2uws=",
283
- "MindExecution.Plugins.Business.asckvekct8.dll": "sha256-ujRTVA1cvwBWDAdHqxU8oyTnOyjgvsr0ynsQjjxJxcY=",
283
+ "MindExecution.Plugins.Business.g8txk1zzic.dll": "sha256-QDrnNfNT+7lpSbU0r6gYDGL8EhI3+4eYCrR1YR6uveE=",
284
284
  "MindExecution.Plugins.Concept.u9kzsgf64o.dll": "sha256-Yp38m6zHe8EBxtm480N4LfcHRpzFZRhYpr1RsCgnlK8=",
285
285
  "MindExecution.Plugins.PlanMaster.kibqg6rvqh.dll": "sha256-NOtEHR8Y0rO8BguFvD1soa8jfB4YVQFydten0SzqBEg=",
286
- "MindExecution.Shared.tlbhl3vzry.dll": "sha256-/9nQZxjXPlmSaR2aLxtKn+8gSaoPbSd9uMesWd0UoT8=",
286
+ "MindExecution.Shared.tbutfszqeu.dll": "sha256-yU33PJ6codEvzqv4qz/ix86PHZtrImjrPJ74h0wWDBw=",
287
287
  "MindExecution.Web.7axuoygrwi.dll": "sha256-/6NQ8z9E7ixNwgYD71eh6M6YCGzctKodTWcZNJcNF8E="
288
288
  },
289
289
  "lazyAssembly": {
@@ -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=20260618-mdm-select-isolated-v624-x1" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260618-mdm-select-isolated-v624-x1" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260619-ua-immediate-camera-v629" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260619-ua-immediate-camera-v629" />
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 = '20260618-mdm-select-isolated-v624-x1';
582
+ const scriptVersion = '20260619-ua-immediate-camera-v629';
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": "K/taiqDv",
2
+ "version": "GRo5dM0O",
3
3
  "assets": [
4
4
  {
5
5
  "hash": "sha256-+CSYMcqLNTsq3VnH11jgYyOCCdxvHzL74CBmo4sCmMU=",
@@ -42,7 +42,7 @@
42
42
  "url": "_content/MindExecution.Shared/css/app.css"
43
43
  },
44
44
  {
45
- "hash": "sha256-MAHHFASnRW0TgyMN27eWTfaPzuhTyjRRge7J1b59tUs=",
45
+ "hash": "sha256-+g9Cfs6qqYnJ6Ouz/Ngv/mH55lhd3LWKBAgpI6GT0Rg=",
46
46
  "url": "_content/MindExecution.Shared/css/mind-map-overrides.css"
47
47
  },
48
48
  {
@@ -78,7 +78,7 @@
78
78
  "url": "_content/MindExecution.Shared/js/marked.min.js"
79
79
  },
80
80
  {
81
- "hash": "sha256-L5F/PiBcKx1Eln1SKxogQkd98lX1qWvOo7qM9ESkZXM=",
81
+ "hash": "sha256-/fQ1wjxp+3O+Y/gkYr4QbG+6sFXWj4lMsMQDqVFHA6o=",
82
82
  "url": "_content/MindExecution.Shared/js/mind-map-core.js"
83
83
  },
84
84
  {
@@ -86,7 +86,7 @@
86
86
  "url": "_content/MindExecution.Shared/js/mind-map-core.js.backup"
87
87
  },
88
88
  {
89
- "hash": "sha256-kkLRfKhP8lwimU4UAPpT3pQQo1IjFpRqqVK03ebH1js=",
89
+ "hash": "sha256-a4cxuoxBYXD4EO2qz0M/MCAawyYuvTK05c9hMfe9gP4=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -106,7 +106,7 @@
106
106
  "url": "_content/MindExecution.Shared/js/mind-map-glow-shader.js"
107
107
  },
108
108
  {
109
- "hash": "sha256-hhn4w/HZp82ZX3rluvDHeHQ9MRVL5ppDwgmAk4TeAlY=",
109
+ "hash": "sha256-i64OpPX8Poyxx3C/2x7I2hpEZg07Bxx3Ao/t2gnQSkg=",
110
110
  "url": "_content/MindExecution.Shared/js/mind-map-interactions.js"
111
111
  },
112
112
  {
@@ -410,8 +410,8 @@
410
410
  "url": "_framework/MimeMapping.og9ys58ylm.dll"
411
411
  },
412
412
  {
413
- "hash": "sha256-2ssZ+cC0K4aW0R8wQHa8JzS1UlYMabFvA3aVK+CH1Ek=",
414
- "url": "_framework/MindExecution.Core.21gc0645uz.dll"
413
+ "hash": "sha256-sKjYj7JohRjgfg3dzKO5QZcmLGIJsWao1ASfKpZyRWI=",
414
+ "url": "_framework/MindExecution.Core.c9wgwsw9z6.dll"
415
415
  },
416
416
  {
417
417
  "hash": "sha256-d7gGGpxiQNphs0at1uO1fAmYe28MFNVgGTEqxoM2uws=",
@@ -422,8 +422,8 @@
422
422
  "url": "_framework/MindExecution.Plugins.Admin.29mytzdaun.dll"
423
423
  },
424
424
  {
425
- "hash": "sha256-ujRTVA1cvwBWDAdHqxU8oyTnOyjgvsr0ynsQjjxJxcY=",
426
- "url": "_framework/MindExecution.Plugins.Business.asckvekct8.dll"
425
+ "hash": "sha256-QDrnNfNT+7lpSbU0r6gYDGL8EhI3+4eYCrR1YR6uveE=",
426
+ "url": "_framework/MindExecution.Plugins.Business.g8txk1zzic.dll"
427
427
  },
428
428
  {
429
429
  "hash": "sha256-Yp38m6zHe8EBxtm480N4LfcHRpzFZRhYpr1RsCgnlK8=",
@@ -442,8 +442,8 @@
442
442
  "url": "_framework/MindExecution.Plugins.YouTube.089r64n2hv.dll"
443
443
  },
444
444
  {
445
- "hash": "sha256-/9nQZxjXPlmSaR2aLxtKn+8gSaoPbSd9uMesWd0UoT8=",
446
- "url": "_framework/MindExecution.Shared.tlbhl3vzry.dll"
445
+ "hash": "sha256-yU33PJ6codEvzqv4qz/ix86PHZtrImjrPJ74h0wWDBw=",
446
+ "url": "_framework/MindExecution.Shared.tbutfszqeu.dll"
447
447
  },
448
448
  {
449
449
  "hash": "sha256-/6NQ8z9E7ixNwgYD71eh6M6YCGzctKodTWcZNJcNF8E=",
@@ -770,7 +770,7 @@
770
770
  "url": "_framework/Websocket.Client.vapounvmnl.dll"
771
771
  },
772
772
  {
773
- "hash": "sha256-36mQLZwJPEYidi6boI2UFIh+CfZxcWNdaSjzrzRQ4+Q=",
773
+ "hash": "sha256-CWwdnr0to821v5Uk88QkwDGDEwfwdQBNvxX05RdN/nw=",
774
774
  "url": "_framework/blazor.boot.json"
775
775
  },
776
776
  {
@@ -834,7 +834,7 @@
834
834
  "url": "image-manifest.json"
835
835
  },
836
836
  {
837
- "hash": "sha256-G9VeNBViV+SdcI+K0CTSCBUeAPdnMjIquPkPHx3PKTE=",
837
+ "hash": "sha256-z/upearyd7I6/RhUu2IdGYCxnh8YCG3BC+9mnMAAWbY=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: K/taiqDv */
1
+ /* Manifest version: GRo5dM0O */
2
2
  // Hosted deployments should prefer the network over stale offline caches.
3
3
  // This service worker immediately clears old Blazor offline caches and unregisters itself.
4
4