@mindexec/cli 0.2.299 → 0.2.301

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.299",
3
+ "version": "0.2.301",
4
4
  "description": "MindExec local runtime and bridge CLI",
5
5
  "main": "server.js",
6
6
  "type": "module",
package/server.js CHANGED
@@ -7614,7 +7614,12 @@ async function proxyCompanyCoreRequest(req, res) {
7614
7614
  console.warn(`[CompanyCore/Proxy] CompanyCore is not reachable at ${companyCoreBaseUrl}. Start CompanyCore or set COMPANY_CORE_URL.`);
7615
7615
  }
7616
7616
 
7617
- res.status(503).json({
7617
+ const isReadProbe = ['GET', 'HEAD'].includes(String(req.method || '').toUpperCase());
7618
+ if (isReadProbe) {
7619
+ res.setHeader('x-mindexec-upstream-status', '503');
7620
+ }
7621
+
7622
+ res.status(isReadProbe ? 200 : 503).json({
7618
7623
  status: 'unavailable',
7619
7624
  error: 'CompanyCore is not running',
7620
7625
  target: companyCoreBaseUrl,
@@ -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-single-aa-v758';
8
+ const MINDMAP_CORE_BUILD_ID = '20260621-css-image-single-surface-v760';
9
9
  const CanvasPhase = Object.freeze({
10
10
  Booting: 'booting',
11
11
  BoardFileLoading: 'board-file-loading',
@@ -1607,6 +1607,31 @@
1607
1607
  return LOOPBACK_ASSET_URL_REGEX.test(String(url || '').trim());
1608
1608
  }
1609
1609
 
1610
+ function shouldAttachCssMediaAuthorization(targetUrl, authToken) {
1611
+ const token = typeof authToken === 'string' ? authToken.trim() : '';
1612
+ if (!token) {
1613
+ return false;
1614
+ }
1615
+
1616
+ const normalized = normalizeCssMediaUrl(targetUrl);
1617
+ if (!normalized || isNonRefreshableMediaUrl(normalized)) {
1618
+ return false;
1619
+ }
1620
+
1621
+ if (isLoopbackCssAssetUrl(normalized)) {
1622
+ return true;
1623
+ }
1624
+
1625
+ try {
1626
+ const baseUrl = document?.baseURI || window?.location?.href || 'http://localhost/';
1627
+ const target = new URL(normalized, baseUrl);
1628
+ const currentOrigin = window?.location?.origin || new URL(baseUrl).origin;
1629
+ return target.origin === currentOrigin;
1630
+ } catch {
1631
+ return !/^[a-z][a-z0-9+.-]*:/i.test(normalized);
1632
+ }
1633
+ }
1634
+
1610
1635
  function getCssMediaCanonicalSource(mediaEl, fallback = '') {
1611
1636
  return normalizeCssMediaUrl(
1612
1637
  mediaEl?.dataset?.mediaSourceUrl
@@ -3312,7 +3337,7 @@
3312
3337
  ? _module.authToken.trim()
3313
3338
  : '';
3314
3339
 
3315
- if (token) {
3340
+ if (shouldAttachCssMediaAuthorization(targetUrl, token)) {
3316
3341
  requestOptions.headers = {
3317
3342
  Authorization: `Bearer ${token}`
3318
3343
  };
@@ -3682,6 +3707,68 @@
3682
3707
  return;
3683
3708
  }
3684
3709
 
3710
+ const releaseReadyCssImageBodyBridge = () => {
3711
+ if (contentTypeLower !== 'image' || !nodeModel || !_module?.nodeObjectsById) {
3712
+ return false;
3713
+ }
3714
+
3715
+ const nodeId = String(nodeModel?.id ?? nodeModel?.Id ?? '').trim();
3716
+ if (!nodeId) {
3717
+ return false;
3718
+ }
3719
+
3720
+ const entry = _module.nodeObjectsById.get(nodeId);
3721
+ const element = entry?.cssObject?.element || null;
3722
+ const cssVisible = entry?.currentType === 'CSS' &&
3723
+ entry?.cssObject?.visible === true &&
3724
+ !!element &&
3725
+ element.style.display !== 'none' &&
3726
+ element.style.visibility !== 'hidden' &&
3727
+ (!element.isConnected || element.isConnected === true);
3728
+ const imageReady =
3729
+ String(mediaEl.dataset?.mediaReady || '').trim() === '1' ||
3730
+ (mediaEl.complete === true &&
3731
+ Number(mediaEl.naturalWidth || 0) > 0 &&
3732
+ Number(mediaEl.naturalHeight || 0) > 0);
3733
+
3734
+ if (!cssVisible || !imageReady) {
3735
+ return false;
3736
+ }
3737
+
3738
+ nodeModel._showImageBodyInCssMode = false;
3739
+ if (entry) {
3740
+ entry._fullResCssImageRevealLatched = true;
3741
+ entry._fullResCssImageReadyVisibleSince =
3742
+ (typeof performance !== 'undefined' && typeof performance.now === 'function')
3743
+ ? performance.now()
3744
+ : Date.now();
3745
+ }
3746
+
3747
+ const body = entry?.bodyMesh || entry?.glObject?.getObjectByName?.('body') || null;
3748
+ const tail = entry?.tailMesh || entry?.glObject?.getObjectByName?.('tail') || null;
3749
+ if (body) {
3750
+ body.visible = false;
3751
+ }
3752
+ if (tail) {
3753
+ tail.visible = false;
3754
+ }
3755
+ ['outline', 'imageMidGlow', 'imageMidEdge', 'glow'].forEach(name => {
3756
+ const decoration = entry?.glObject?.getObjectByName?.(name);
3757
+ if (!decoration) return;
3758
+ decoration.visible = false;
3759
+ if (decoration.material) {
3760
+ decoration.material.opacity = 0;
3761
+ decoration.material.needsUpdate = true;
3762
+ }
3763
+ });
3764
+ entry?.glObject?.children?.forEach?.(child => {
3765
+ if (child?.userData?.isResizeHandle) {
3766
+ child.visible = false;
3767
+ }
3768
+ });
3769
+ return true;
3770
+ };
3771
+
3685
3772
  const clearVideoPlaybackError = () => {
3686
3773
  if (contentTypeLower !== 'video') {
3687
3774
  return;
@@ -3699,6 +3786,14 @@
3699
3786
  if (contentTypeLower === 'image') {
3700
3787
  mediaEl.dataset.mediaReady = '1';
3701
3788
  mediaEl.style.opacity = '1';
3789
+ const releaseBridge = () => {
3790
+ releaseReadyCssImageBodyBridge();
3791
+ };
3792
+ if (typeof requestAnimationFrame === 'function') {
3793
+ requestAnimationFrame(releaseBridge);
3794
+ } else {
3795
+ setTimeout(releaseBridge, 0);
3796
+ }
3702
3797
  }
3703
3798
  clearVideoPlaybackError();
3704
3799
  setAssetRefreshState(nodeModel, '', '');
@@ -51,7 +51,7 @@
51
51
  // ▲▲▲ [Usage] ▲▲▲
52
52
 
53
53
  // Procedural line rendering settings
54
- const LOD_RENDERER_BUILD_ID = '20260620-css3d-single-aa-v758';
54
+ const LOD_RENDERER_BUILD_ID = '20260621-css-image-single-surface-v760';
55
55
  const DirtyKind = Object.freeze({
56
56
  ResidentFullRebuild: 'resident-full-rebuild',
57
57
  ResidentPatch: 'resident-patch',
@@ -3856,27 +3856,10 @@
3856
3856
  return true;
3857
3857
  }
3858
3858
 
3859
- // Once the CSS image is visibly ready, keep the node on the CSS path
3860
- // for the rest of the current visible session. Re-enabling the GL
3861
- // bridge because of transient handoff or dirty flags causes the
3862
- // image to flicker while entering NEAR/NORMAL.
3863
- if (entry._fullResCssImageRevealLatched === true) {
3864
- return false;
3865
- }
3866
-
3867
3859
  const now = typeof performance !== 'undefined' && typeof performance.now === 'function'
3868
3860
  ? performance.now()
3869
3861
  : Date.now();
3870
- const readyVisibleSince = Number(entry._fullResCssImageReadyVisibleSince || 0);
3871
- if (!(readyVisibleSince > 0)) {
3872
- entry._fullResCssImageReadyVisibleSince = now;
3873
- return true;
3874
- }
3875
-
3876
- if (now - readyVisibleSince < this._fullResCssImageBridgeSettleMs) {
3877
- return true;
3878
- }
3879
-
3862
+ entry._fullResCssImageReadyVisibleSince = Number(entry._fullResCssImageReadyVisibleSince || 0) || now;
3880
3863
  entry._fullResCssImageRevealLatched = true;
3881
3864
  return false;
3882
3865
  }
@@ -91,6 +91,31 @@
91
91
  .test(String(url || '').trim());
92
92
  }
93
93
 
94
+ function shouldAttachImageAssetAuthorization(targetUrl, authToken) {
95
+ const token = typeof authToken === 'string' ? authToken.trim() : '';
96
+ if (!token) {
97
+ return false;
98
+ }
99
+
100
+ const normalized = normalizeImageAssetUrl(targetUrl);
101
+ if (!normalized || isNonRefreshableLocalUrl(normalized)) {
102
+ return false;
103
+ }
104
+
105
+ if (isLoopbackImageAssetUrl(normalized)) {
106
+ return true;
107
+ }
108
+
109
+ try {
110
+ const baseUrl = document?.baseURI || window?.location?.href || 'http://localhost/';
111
+ const target = new URL(normalized, baseUrl);
112
+ const currentOrigin = window?.location?.origin || new URL(baseUrl).origin;
113
+ return target.origin === currentOrigin;
114
+ } catch {
115
+ return !/^[a-z][a-z0-9+.-]*:/i.test(normalized);
116
+ }
117
+ }
118
+
94
119
  function getCanonicalImageAssetKey(url) {
95
120
  const normalized = normalizeImageAssetUrl(url);
96
121
  if (!normalized) {
@@ -1805,7 +1830,7 @@
1805
1830
  requestOptions.targetAddressSpace = 'loopback';
1806
1831
  }
1807
1832
 
1808
- if (authToken) {
1833
+ if (shouldAttachImageAssetAuthorization(targetUrl, authToken)) {
1809
1834
  requestOptions.headers = {
1810
1835
  Authorization: `Bearer ${authToken}`
1811
1836
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "mainAssemblyName": "MindExecution.Web",
3
3
  "resources": {
4
- "hash": "sha256-FF1nAHdYmz7+B94axSY0q+4MC9oZypaC7l7e/MluIM4=",
4
+ "hash": "sha256-OtTww/K4VhDTgTS4mHneBJqBjhiKpOOo+MCUeq0ZDvI=",
5
5
  "fingerprinting": {
6
6
  "Google.Protobuf.9h59ukbel7.dll": "Google.Protobuf.dll",
7
7
  "Markdig.d1j7v41cl1.dll": "Markdig.dll",
@@ -127,12 +127,12 @@
127
127
  "MindExecution.Kernel.l5y3qroa7p.dll": "MindExecution.Kernel.dll",
128
128
  "MindExecution.Plugins.Admin.uuf238xa0h.dll": "MindExecution.Plugins.Admin.dll",
129
129
  "MindExecution.Plugins.Business.nyr3v25v48.dll": "MindExecution.Plugins.Business.dll",
130
- "MindExecution.Plugins.Concept.xjufz6g1rt.dll": "MindExecution.Plugins.Concept.dll",
130
+ "MindExecution.Plugins.Concept.l9z9tx9svt.dll": "MindExecution.Plugins.Concept.dll",
131
131
  "MindExecution.Plugins.Directory.ju87t8h3zs.dll": "MindExecution.Plugins.Directory.dll",
132
- "MindExecution.Plugins.PlanMaster.ypr32rpm29.dll": "MindExecution.Plugins.PlanMaster.dll",
133
- "MindExecution.Plugins.YouTube.pjv8y1v7kk.dll": "MindExecution.Plugins.YouTube.dll",
134
- "MindExecution.Shared.6v8p1z521c.dll": "MindExecution.Shared.dll",
135
- "MindExecution.Web.df0li0jddy.dll": "MindExecution.Web.dll",
132
+ "MindExecution.Plugins.PlanMaster.krn3jgvjpa.dll": "MindExecution.Plugins.PlanMaster.dll",
133
+ "MindExecution.Plugins.YouTube.5m53srfud6.dll": "MindExecution.Plugins.YouTube.dll",
134
+ "MindExecution.Shared.rv3rw2h14g.dll": "MindExecution.Shared.dll",
135
+ "MindExecution.Web.vb3eqoz4v9.dll": "MindExecution.Web.dll",
136
136
  "dotnet.js": "dotnet.js",
137
137
  "dotnet.native.qc8g39g30v.js": "dotnet.native.js",
138
138
  "dotnet.native.boem75ye5i.wasm": "dotnet.native.wasm",
@@ -281,15 +281,15 @@
281
281
  "MindExecution.Core.y7ffihhajj.dll": "sha256-zsCKUWBWzDly1h5/vMtqVRb7PeG4lgfIZbQuJFyY1QU=",
282
282
  "MindExecution.Kernel.l5y3qroa7p.dll": "sha256-V4pQTxua0lGWpdsFpo7bHr6rPFWZeofry7e9On+OJmo=",
283
283
  "MindExecution.Plugins.Business.nyr3v25v48.dll": "sha256-T4c7+fDE4TQAXAoFmHnYM+tT7RSvAM7W0VinLPoD+6U=",
284
- "MindExecution.Plugins.Concept.xjufz6g1rt.dll": "sha256-bWM6jA2lPPkHFs5Itjqjj7S9nsS+JfTBOnhDoO1aSW4=",
285
- "MindExecution.Plugins.PlanMaster.ypr32rpm29.dll": "sha256-6rKiLaTNql6z8E+yhQJaIfxU9d/ed2lH0moVYDNZ5n8=",
286
- "MindExecution.Shared.6v8p1z521c.dll": "sha256-3iknhbM7GDnYzPsIgCI/OOcXnwTr1ar8Eam3DBVnK1o=",
287
- "MindExecution.Web.df0li0jddy.dll": "sha256-abf4IekxOERJ9QG4vtL5dVjb8BDVL65ghHy9Ff+xoCM="
284
+ "MindExecution.Plugins.Concept.l9z9tx9svt.dll": "sha256-N/QoILmTilvX5Zo4SCy7ENTCqMzSC6RIEQlEwtxkGPo=",
285
+ "MindExecution.Plugins.PlanMaster.krn3jgvjpa.dll": "sha256-8IFpm/2fpsWD3syyl58LTSWSGC8PfcrsLdmmSKR1Sq0=",
286
+ "MindExecution.Shared.rv3rw2h14g.dll": "sha256-ZwT/+Wjs0ZoDe3XZwwDlkPwo7xexhoK1RcyI2rEiywY=",
287
+ "MindExecution.Web.vb3eqoz4v9.dll": "sha256-W/K+qUiAlmIiww6SxYbWiLUOla0pMGqpAfr7q+dmBgs="
288
288
  },
289
289
  "lazyAssembly": {
290
290
  "MindExecution.Plugins.Admin.uuf238xa0h.dll": "sha256-OrCIUack8nSWBBiZK65DlJ3YGM677RAA8cX/oJjhm5c=",
291
291
  "MindExecution.Plugins.Directory.ju87t8h3zs.dll": "sha256-dapAkel5qj7fK6BiDDmvkzZL96frl8k/3yP8SDr3rMw=",
292
- "MindExecution.Plugins.YouTube.pjv8y1v7kk.dll": "sha256-S/gcxDXtRDC7hHYM8Rt3018Lm0/MBdGdoAzbLnZrJj0="
292
+ "MindExecution.Plugins.YouTube.5m53srfud6.dll": "sha256-02hOpWFNogHEBktxD4XUnDN/oKFJnO0g8n4bYCP0tAY="
293
293
  }
294
294
  },
295
295
  "cacheBootResources": true,
@@ -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-single-aa-v758" />
11
- <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260620-css3d-single-aa-v758" />
10
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/app.css?v=20260621-css-image-single-surface-v760" />
11
+ <link rel="stylesheet" href="_content/MindExecution.Shared/css/mind-map-overrides.css?v=20260621-css-image-single-surface-v760" />
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-single-aa-v758';
582
+ const scriptVersion = '20260621-css-image-single-surface-v760';
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": "Lnn9EG9z",
2
+ "version": "A7baj8vz",
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-raydXreUnr7yxmsjp+XyoxUPnVTYKhB41VU1PLq3PCE=",
81
+ "hash": "sha256-b2u6cSJGIXDsWA8V4jbeQJGX+azC197EMCEBJzyJwN0=",
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-3l5a2qua37GH1l1Use9Uvs+gcyAssbWa3EX3BKEATng=",
89
+ "hash": "sha256-ET3Xg9eNPJjBlAfUFDjw1r6BtKYdEqkoxyjAo+z3rEE=",
90
90
  "url": "_content/MindExecution.Shared/js/mind-map-css3d-manager.js"
91
91
  },
92
92
  {
@@ -114,7 +114,7 @@
114
114
  "url": "_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js"
115
115
  },
116
116
  {
117
- "hash": "sha256-iLW9QMJ9V9dlbrTy237dLYkCEZYYNiyXIf9NNPAIElE=",
117
+ "hash": "sha256-4Eptn15wU04ThuQtEErazlaA5Izn+rdSf7VgdQsmBYA=",
118
118
  "url": "_content/MindExecution.Shared/js/mind-map-lod-renderer.js"
119
119
  },
120
120
  {
@@ -158,7 +158,7 @@
158
158
  "url": "_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js"
159
159
  },
160
160
  {
161
- "hash": "sha256-MMfGxAaxa3MZugIcUvHMrqpLmQdEHV3mZyJFIeQ7rUY=",
161
+ "hash": "sha256-rXMMiOLaRGM1Dzp+IuVTVGJIQCVrr8apnByC4RmpbIQ=",
162
162
  "url": "_content/MindExecution.Shared/js/mind-map-texture-factory.js"
163
163
  },
164
164
  {
@@ -426,28 +426,28 @@
426
426
  "url": "_framework/MindExecution.Plugins.Business.nyr3v25v48.dll"
427
427
  },
428
428
  {
429
- "hash": "sha256-bWM6jA2lPPkHFs5Itjqjj7S9nsS+JfTBOnhDoO1aSW4=",
430
- "url": "_framework/MindExecution.Plugins.Concept.xjufz6g1rt.dll"
429
+ "hash": "sha256-N/QoILmTilvX5Zo4SCy7ENTCqMzSC6RIEQlEwtxkGPo=",
430
+ "url": "_framework/MindExecution.Plugins.Concept.l9z9tx9svt.dll"
431
431
  },
432
432
  {
433
433
  "hash": "sha256-dapAkel5qj7fK6BiDDmvkzZL96frl8k/3yP8SDr3rMw=",
434
434
  "url": "_framework/MindExecution.Plugins.Directory.ju87t8h3zs.dll"
435
435
  },
436
436
  {
437
- "hash": "sha256-6rKiLaTNql6z8E+yhQJaIfxU9d/ed2lH0moVYDNZ5n8=",
438
- "url": "_framework/MindExecution.Plugins.PlanMaster.ypr32rpm29.dll"
437
+ "hash": "sha256-8IFpm/2fpsWD3syyl58LTSWSGC8PfcrsLdmmSKR1Sq0=",
438
+ "url": "_framework/MindExecution.Plugins.PlanMaster.krn3jgvjpa.dll"
439
439
  },
440
440
  {
441
- "hash": "sha256-S/gcxDXtRDC7hHYM8Rt3018Lm0/MBdGdoAzbLnZrJj0=",
442
- "url": "_framework/MindExecution.Plugins.YouTube.pjv8y1v7kk.dll"
441
+ "hash": "sha256-02hOpWFNogHEBktxD4XUnDN/oKFJnO0g8n4bYCP0tAY=",
442
+ "url": "_framework/MindExecution.Plugins.YouTube.5m53srfud6.dll"
443
443
  },
444
444
  {
445
- "hash": "sha256-3iknhbM7GDnYzPsIgCI/OOcXnwTr1ar8Eam3DBVnK1o=",
446
- "url": "_framework/MindExecution.Shared.6v8p1z521c.dll"
445
+ "hash": "sha256-ZwT/+Wjs0ZoDe3XZwwDlkPwo7xexhoK1RcyI2rEiywY=",
446
+ "url": "_framework/MindExecution.Shared.rv3rw2h14g.dll"
447
447
  },
448
448
  {
449
- "hash": "sha256-abf4IekxOERJ9QG4vtL5dVjb8BDVL65ghHy9Ff+xoCM=",
450
- "url": "_framework/MindExecution.Web.df0li0jddy.dll"
449
+ "hash": "sha256-W/K+qUiAlmIiww6SxYbWiLUOla0pMGqpAfr7q+dmBgs=",
450
+ "url": "_framework/MindExecution.Web.vb3eqoz4v9.dll"
451
451
  },
452
452
  {
453
453
  "hash": "sha256-IsZJ91/OW+fHzNqIgEc7Y072ns8z9dGritiSyvR9Wgc=",
@@ -770,7 +770,7 @@
770
770
  "url": "_framework/Websocket.Client.vapounvmnl.dll"
771
771
  },
772
772
  {
773
- "hash": "sha256-DCa6Ul8O+PoQtr9kl/Ks5HOAS8WrNZHoXx7wizRdu68=",
773
+ "hash": "sha256-O8em1XbCRLjEd/hcubu7Ryw+oGv+jYqaVmK41A5y5zM=",
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-aAhit/PSlXG9mUxc/uVhPIv5tlk5grTes5A5/VERvCk=",
837
+ "hash": "sha256-Mx0LK7PCZgmIE/7IpOtqDjQWG6xfhcEJirhlGrrkwsQ=",
838
838
  "url": "index.html"
839
839
  },
840
840
  {
@@ -1,4 +1,4 @@
1
- /* Manifest version: Lnn9EG9z */
1
+ /* Manifest version: A7baj8vz */
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