@memtensor/memos-local-openclaw-plugin 1.0.4-beta.3 → 1.0.4-beta.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/viewer/html.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CA8mOzD"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/viewer/html.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAgoOzD"}
@@ -1486,7 +1486,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1486
1486
  <li><span data-i18n="guide.join.s1">Ask your Hub admin for the Hub Address and Team Token</span></li>
1487
1487
  <li><span data-i18n="guide.join.s2">Enable sharing above, select "Client" mode</span></li>
1488
1488
  <li><span data-i18n="guide.join.s3">Fill in Hub Address and Team Token, click "Test Connection"</span></li>
1489
- <li><span data-i18n="guide.join.s4">Save settings and restart the OpenClaw gateway</span></li>
1489
+ <li><span data-i18n="guide.join.s4">Save settings and restart the OpenClaw gateway (page refreshes automatically)</span></li>
1490
1490
  </ol>
1491
1491
  <button class="btn-guide" onclick="guideGoToHub('client')" data-i18n="guide.join.btn">\u2192 Configure Client Mode</button>
1492
1492
  </div>
@@ -1498,7 +1498,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1498
1498
  <div class="team-guide-opt-desc" data-i18n="guide.hub.desc">Be the team server. Run a Hub on this device so others can connect and share memories with you.</div>
1499
1499
  <ol class="team-guide-steps">
1500
1500
  <li><span data-i18n="guide.hub.s1">Enable sharing above, select "Hub" mode</span></li>
1501
- <li><span data-i18n="guide.hub.s2">Set a team name, save settings, and restart the gateway</span></li>
1501
+ <li><span data-i18n="guide.hub.s2">Set a team name, save settings, and restart the gateway (page refreshes automatically)</span></li>
1502
1502
  <li><span data-i18n="guide.hub.s3">Share the Hub Address and Team Token with your team members</span></li>
1503
1503
  <li><span data-i18n="guide.hub.s4">Approve join requests in the Admin Panel</span></li>
1504
1504
  </ol>
@@ -1554,7 +1554,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1554
1554
  <div style="font-weight:700;color:var(--text);margin-bottom:4px" data-i18n="settings.hub.clientSteps.title">Quick Setup (3 steps)</div>
1555
1555
  <div><span style="color:var(--accent)">1.</span> <span data-i18n="settings.hub.clientSteps.s1">Ask your Hub admin for Hub Address and Team Token</span></div>
1556
1556
  <div><span style="color:var(--accent)">2.</span> <span data-i18n="settings.hub.clientSteps.s2">Fill them in below, click "Test Connection" to verify</span></div>
1557
- <div><span style="color:var(--accent)">3.</span> <span data-i18n="settings.hub.clientSteps.s3">Click "Save Settings", then restart OpenClaw gateway to connect</span></div>
1557
+ <div><span style="color:var(--accent)">3.</span> <span data-i18n="settings.hub.clientSteps.s3">Click "Save Settings", then restart OpenClaw gateway (page refreshes automatically)</span></div>
1558
1558
  </div>
1559
1559
  <div class="settings-grid">
1560
1560
  <div class="settings-field full-width">
@@ -1576,10 +1576,12 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1576
1576
  </div>
1577
1577
  </div>
1578
1578
 
1579
- <div class="settings-card-divider"></div>
1580
- <div id="sharingStatusPanel"></div>
1581
- <div id="sharingTeamPanel"></div>
1582
- <div id="sharingAdminPanel"></div>
1579
+ <div id="sharingPanelsWrap" style="display:none">
1580
+ <div class="settings-card-divider"></div>
1581
+ <div id="sharingStatusPanel"></div>
1582
+ <div id="sharingTeamPanel"></div>
1583
+ <div id="sharingAdminPanel"></div>
1584
+ </div>
1583
1585
 
1584
1586
  <div class="settings-card-divider"></div>
1585
1587
  <div class="settings-actions">
@@ -2066,6 +2068,8 @@ const I18N={
2066
2068
  'settings.reset':'Reset',
2067
2069
  'settings.saved':'Saved',
2068
2070
  'settings.restart.hint':'Some changes require restarting the OpenClaw gateway to take effect.',
2071
+ 'settings.restart.autoRefresh':'Page will refresh automatically after the gateway restarts...',
2072
+ 'settings.restart.waiting':'Configuration saved. Waiting for gateway to restart...',
2069
2073
  'settings.save.fail':'Failed to save settings',
2070
2074
  'settings.save.emb.required':'Embedding model is required. Please configure an embedding model before saving.',
2071
2075
  'settings.save.emb.fail':'Embedding model test failed, cannot save',
@@ -2195,11 +2199,11 @@ const I18N={
2195
2199
  'settings.hub.clientSteps.title':'Quick Setup (3 steps)',
2196
2200
  'settings.hub.clientSteps.s1':'Ask your Hub admin for Hub Address and Team Token',
2197
2201
  'settings.hub.clientSteps.s2':'Fill them in below, click "Test Connection" to verify',
2198
- 'settings.hub.clientSteps.s3':'Click "Save Settings", then restart OpenClaw gateway to connect',
2202
+ 'settings.hub.clientSteps.s3':'Click "Save Settings", then restart OpenClaw gateway (page refreshes automatically)',
2199
2203
  'settings.hub.shareInfo.title':'Share this info with your team members:',
2200
2204
  'settings.hub.shareInfo.yourIP':'your-IP',
2201
2205
  'settings.hub.shareInfo.clickCopy':'Click to copy',
2202
- 'settings.hub.restartAlert':'Hub sharing config saved! Please restart the OpenClaw gateway for changes to take effect.\\n\\nRun: openclaw gateway stop && openclaw gateway',
2206
+ 'settings.hub.restartAlert':'Hub sharing config saved! Please restart the OpenClaw gateway for changes to take effect.\\n\\nRun: openclaw gateway stop && openclaw gateway start',
2203
2207
  'settings.hub.hubAddress':'Hub Address',
2204
2208
  'settings.hub.hubAddress.hint':'Hub server address, e.g. 192.168.1.100:18800',
2205
2209
  'settings.hub.teamTokenClient':'Team Token',
@@ -2412,7 +2416,7 @@ const I18N={
2412
2416
  'update.installing':'Installing...',
2413
2417
  'update.success':'Updated!',
2414
2418
  'update.failed':'Update failed',
2415
- 'update.restarting':'Restarting service...',
2419
+ 'update.restarting':'Restarting service, page will refresh automatically...',
2416
2420
  'update.dismiss':'Dismiss',
2417
2421
  'sharing.disable.confirm.hub':'You are about to shut down the Hub server.\\n\\nWhat will happen:\\n\\u2022 All connected team members will be disconnected\\n\\u2022 They will no longer be able to sync memories, tasks, or skills\\n\\u2022 Shared data is preserved and will be available when you re-enable\\n\\nAre you sure?',
2418
2422
  'sharing.disable.confirm.client':'You are about to disconnect from the team Hub.\\n\\nWhat will happen:\\n\\u2022 You will no longer receive shared memories, tasks, or skills from the team\\n\\u2022 Your local data is preserved and will not be affected\\n\\u2022 You can reconnect later by re-enabling sharing\\n\\nAre you sure?',
@@ -2434,12 +2438,12 @@ const I18N={
2434
2438
  'guide.join.s1':'Ask your Hub admin for the Hub Address and Team Token',
2435
2439
  'guide.join.s2':'Go to Settings \u2192 Hub & Team, enable sharing, select "Client" mode',
2436
2440
  'guide.join.s3':'Fill in Hub Address and Team Token, click "Test Connection"',
2437
- 'guide.join.s4':'Save settings and restart the OpenClaw gateway',
2441
+ 'guide.join.s4':'Save settings and restart the OpenClaw gateway (page refreshes automatically)',
2438
2442
  'guide.join.btn':'\u2192 Configure Client Mode',
2439
2443
  'guide.hub.title':'Start Your Own Hub',
2440
2444
  'guide.hub.desc':'Be the team server. Run a Hub on this device so others can connect and share memories with you.',
2441
2445
  'guide.hub.s1':'Go to Settings \u2192 Hub & Team, enable sharing, select "Hub" mode',
2442
- 'guide.hub.s2':'Set a team name, save settings, and restart the gateway',
2446
+ 'guide.hub.s2':'Set a team name, save settings, and restart the gateway (page refreshes automatically)',
2443
2447
  'guide.hub.s3':'Share the Hub Address and Team Token with your team members',
2444
2448
  'guide.hub.s4':'Approve join requests in the Admin Panel',
2445
2449
  'guide.hub.btn':'\u2192 Configure Hub Mode'
@@ -2653,6 +2657,8 @@ const I18N={
2653
2657
  'settings.reset':'重置',
2654
2658
  'settings.saved':'已保存',
2655
2659
  'settings.restart.hint':'部分设置修改后需要重启 OpenClaw 网关才能生效。',
2660
+ 'settings.restart.autoRefresh':'网关重启后页面将自动刷新...',
2661
+ 'settings.restart.waiting':'配置已保存,正在等待网关重启...',
2656
2662
  'settings.save.fail':'保存设置失败',
2657
2663
  'settings.save.emb.required':'嵌入模型为必填项,请先配置嵌入模型再保存。',
2658
2664
  'settings.save.emb.fail':'嵌入模型测试失败,无法保存',
@@ -2782,11 +2788,11 @@ const I18N={
2782
2788
  'settings.hub.clientSteps.title':'快速配置(3 步)',
2783
2789
  'settings.hub.clientSteps.s1':'向 Hub 管理员获取 Hub 地址和团队令牌',
2784
2790
  'settings.hub.clientSteps.s2':'填入下方,点击"测试连接"验证连通性',
2785
- 'settings.hub.clientSteps.s3':'点击"保存设置",然后重启 OpenClaw 网关即可连接',
2791
+ 'settings.hub.clientSteps.s3':'点击「保存设置」,然后重启 OpenClaw 网关(页面会自动刷新)',
2786
2792
  'settings.hub.shareInfo.title':'请将以下信息分享给团队成员:',
2787
2793
  'settings.hub.shareInfo.yourIP':'你的IP',
2788
2794
  'settings.hub.shareInfo.clickCopy':'点击复制',
2789
- 'settings.hub.restartAlert':'Hub 共享配置已保存!请重启 OpenClaw 网关使配置生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway',
2795
+ 'settings.hub.restartAlert':'Hub 共享配置已保存!请重启 OpenClaw 网关使配置生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway start',
2790
2796
  'settings.hub.hubAddress':'Hub 地址',
2791
2797
  'settings.hub.hubAddress.hint':'Hub 服务器地址,如 192.168.1.100:18800',
2792
2798
  'settings.hub.teamTokenClient':'团队令牌',
@@ -2999,11 +3005,11 @@ const I18N={
2999
3005
  'update.installing':'安装中...',
3000
3006
  'update.success':'更新完成',
3001
3007
  'update.failed':'更新失败',
3002
- 'update.restarting':'正在重启服务...',
3008
+ 'update.restarting':'正在重启服务,页面将自动刷新...',
3003
3009
  'update.dismiss':'关闭',
3004
3010
  'sharing.disable.confirm.hub':'你即将关闭 Hub 服务。\\n\\n关闭后将会:\\n\\u2022 所有已连接的团队成员将断开连接\\n\\u2022 他们将无法继续同步记忆、任务和技能\\n\\u2022 已共享的数据会保留,重新开启后仍可使用\\n\\n确定要关闭吗?',
3005
3011
  'sharing.disable.confirm.client':'你即将断开与团队 Hub 的连接。\\n\\n断开后将会:\\n\\u2022 你将无法再接收团队共享的记忆、任务和技能\\n\\u2022 你的本地数据不受影响,会完整保留\\n\\u2022 之后可以随时重新开启共享来恢复连接\\n\\n确定要断开吗?',
3006
- 'sharing.disable.restartAlert':'共享已关闭。请重启 OpenClaw gateway 使更改生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway start',
3012
+ 'sharing.disable.restartAlert':'共享已关闭。请重启 OpenClaw 网关使更改生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway start',
3007
3013
  'admin.notEnabled.title':'团队共享尚未开启',
3008
3014
  'admin.notEnabled.desc':'管理面板用于管理团队成员、共享的记忆、任务和技能。使用此功能前,需要先开启 Hub 共享。',
3009
3015
  'admin.notEnabled.setupHub':'配置为 Hub 服务端',
@@ -3021,12 +3027,12 @@ const I18N={
3021
3027
  'guide.join.s1':'向 Hub 管理员索取 Hub 地址和 Team Token',
3022
3028
  'guide.join.s2':'前往「设置 → Hub & Team」,开启共享,选择「Client」模式',
3023
3029
  'guide.join.s3':'填写 Hub 地址和 Team Token,点击「测试连接」',
3024
- 'guide.join.s4':'保存设置并重启 OpenClaw gateway',
3030
+ 'guide.join.s4':'保存设置并重启 OpenClaw 网关(页面会自动刷新)',
3025
3031
  'guide.join.btn':'\u2192 配置 Client 模式',
3026
3032
  'guide.hub.title':'自建 Hub 服务',
3027
3033
  'guide.hub.desc':'将本机作为团队服务端,让其他成员连接过来共享记忆。',
3028
3034
  'guide.hub.s1':'前往「设置 → Hub & Team」,开启共享,选择「Hub」模式',
3029
- 'guide.hub.s2':'设置团队名称,保存设置后重启 gateway',
3035
+ 'guide.hub.s2':'设置团队名称,保存设置后重启网关(页面会自动刷新)',
3030
3036
  'guide.hub.s3':'将 Hub 地址和 Team Token 分享给团队成员',
3031
3037
  'guide.hub.s4':'在管理面板中审批加入请求',
3032
3038
  'guide.hub.btn':'\u2192 配置 Hub 模式'
@@ -3380,11 +3386,14 @@ function renderSharingSettings(data){
3380
3386
  var statusEl=document.getElementById('sharingStatusPanel');
3381
3387
  var teamEl=document.getElementById('sharingTeamPanel');
3382
3388
  var adminEl=document.getElementById('sharingAdminPanel');
3389
+ var panelsWrap=document.getElementById('sharingPanelsWrap');
3383
3390
  if(!statusEl||!teamEl||!adminEl) return;
3384
3391
  if(!data||!data.enabled){
3385
3392
  statusEl.innerHTML='';teamEl.innerHTML='';adminEl.innerHTML='';
3393
+ if(panelsWrap) panelsWrap.style.display='none';
3386
3394
  return;
3387
3395
  }
3396
+ if(panelsWrap) panelsWrap.style.display='';
3388
3397
  var conn=data.connection||{};
3389
3398
  var user=conn.user||{};
3390
3399
  var actualRole=data.role||_sharingRole||'client';
@@ -5631,12 +5640,10 @@ async function saveHubConfig(){
5631
5640
  var ok=await doSaveConfig(cfg, saveBtn, 'hubSaved');
5632
5641
  if(ok){
5633
5642
  loadSharingStatus(false);
5634
- if(sharingEnabled){
5635
- updateHubShareInfo();
5636
- setTimeout(function(){alert(t('settings.hub.restartAlert'));},300);
5637
- }
5638
- if(prevSharingEnabled&&!sharingEnabled){
5639
- setTimeout(function(){alert(t('sharing.disable.restartAlert'));},300);
5643
+ var needsRestart=sharingEnabled||(prevSharingEnabled&&!sharingEnabled);
5644
+ if(sharingEnabled) updateHubShareInfo();
5645
+ if(needsRestart){
5646
+ setTimeout(function(){showRestartOverlay(t('settings.restart.waiting'));},300);
5640
5647
  }
5641
5648
  }
5642
5649
  }
@@ -7185,6 +7192,18 @@ function initViewerTheme(){const s=localStorage.getItem(VIEWER_THEME_KEY);const
7185
7192
  function toggleViewerTheme(){const el=document.documentElement;const cur=el.getAttribute('data-theme')||'dark';const next=cur==='dark'?'light':'dark';el.setAttribute('data-theme',next);localStorage.setItem(VIEWER_THEME_KEY,next);}
7186
7193
  initViewerTheme();
7187
7194
 
7195
+ /* ─── Restart overlay ─── */
7196
+ function showRestartOverlay(msg){
7197
+ var existing=document.getElementById('restartOverlay');
7198
+ if(existing) existing.remove();
7199
+ var ov=document.createElement('div');
7200
+ ov.id='restartOverlay';
7201
+ ov.style.cssText='position:fixed;inset:0;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,.55);backdrop-filter:blur(6px);color:#fff;font-family:inherit';
7202
+ ov.innerHTML='<div style="display:flex;flex-direction:column;align-items:center;gap:16px;max-width:400px;text-align:center"><div style="width:36px;height:36px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite"></div><div style="font-size:15px;font-weight:600">'+esc(msg||t('update.restarting'))+'</div><div id="restartOverlayHint" style="font-size:12px;opacity:.6">'+t('settings.restart.autoRefresh')+'</div></div>';
7203
+ document.body.appendChild(ov);
7204
+ waitForGatewayAndReload(60);
7205
+ }
7206
+
7188
7207
  /* ─── Update check ─── */
7189
7208
  function waitForGatewayAndReload(maxAttempts,attempt){
7190
7209
  attempt=attempt||0;
@@ -7207,8 +7226,7 @@ function doUpdateInstall(packageSpec,btnEl,statusEl){
7207
7226
  if(d.ok){
7208
7227
  btnEl.textContent=t('update.success')+(d.version?' v'+d.version:'');
7209
7228
  btnEl.style.cssText='background:rgba(34,197,94,.15);color:#22c55e;border:1px solid rgba(34,197,94,.3);border-radius:6px;padding:4px 14px;font-size:12px;font-weight:600;cursor:default;white-space:nowrap';
7210
- if(statusEl)statusEl.textContent=t('update.restarting');
7211
- waitForGatewayAndReload(40);
7229
+ showRestartOverlay(t('update.restarting'));
7212
7230
  }else{
7213
7231
  btnEl.textContent=t('update.btn');
7214
7232
  btnEl.style.cssText='background:none;border:1px solid currentColor;border-radius:6px;padding:4px 14px;font-size:12px;font-weight:600;color:inherit;cursor:pointer;white-space:nowrap;opacity:.85';
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/viewer/html.ts"],"names":[],"mappings":";;AAAA,gCA8mOC;AA9mOD,SAAgB,UAAU,CAAC,aAAsB;IACjD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,gCAAgC,aAAa,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qKAygC8J,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkmMnK,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/viewer/html.ts"],"names":[],"mappings":";;AAAA,gCAgoOC;AAhoOD,SAAgB,UAAU,CAAC,aAAsB;IACjD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,gCAAgC,aAAa,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qKAygC8J,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAonMnK,CAAC;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memtensor/memos-local-openclaw-plugin",
3
- "version": "1.0.4-beta.3",
3
+ "version": "1.0.4-beta.5",
4
4
  "description": "MemOS Local memory plugin for OpenClaw — full-write, hybrid-recall, progressive retrieval",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -1483,7 +1483,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1483
1483
  <li><span data-i18n="guide.join.s1">Ask your Hub admin for the Hub Address and Team Token</span></li>
1484
1484
  <li><span data-i18n="guide.join.s2">Enable sharing above, select "Client" mode</span></li>
1485
1485
  <li><span data-i18n="guide.join.s3">Fill in Hub Address and Team Token, click "Test Connection"</span></li>
1486
- <li><span data-i18n="guide.join.s4">Save settings and restart the OpenClaw gateway</span></li>
1486
+ <li><span data-i18n="guide.join.s4">Save settings and restart the OpenClaw gateway (page refreshes automatically)</span></li>
1487
1487
  </ol>
1488
1488
  <button class="btn-guide" onclick="guideGoToHub('client')" data-i18n="guide.join.btn">\u2192 Configure Client Mode</button>
1489
1489
  </div>
@@ -1495,7 +1495,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1495
1495
  <div class="team-guide-opt-desc" data-i18n="guide.hub.desc">Be the team server. Run a Hub on this device so others can connect and share memories with you.</div>
1496
1496
  <ol class="team-guide-steps">
1497
1497
  <li><span data-i18n="guide.hub.s1">Enable sharing above, select "Hub" mode</span></li>
1498
- <li><span data-i18n="guide.hub.s2">Set a team name, save settings, and restart the gateway</span></li>
1498
+ <li><span data-i18n="guide.hub.s2">Set a team name, save settings, and restart the gateway (page refreshes automatically)</span></li>
1499
1499
  <li><span data-i18n="guide.hub.s3">Share the Hub Address and Team Token with your team members</span></li>
1500
1500
  <li><span data-i18n="guide.hub.s4">Approve join requests in the Admin Panel</span></li>
1501
1501
  </ol>
@@ -1551,7 +1551,7 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1551
1551
  <div style="font-weight:700;color:var(--text);margin-bottom:4px" data-i18n="settings.hub.clientSteps.title">Quick Setup (3 steps)</div>
1552
1552
  <div><span style="color:var(--accent)">1.</span> <span data-i18n="settings.hub.clientSteps.s1">Ask your Hub admin for Hub Address and Team Token</span></div>
1553
1553
  <div><span style="color:var(--accent)">2.</span> <span data-i18n="settings.hub.clientSteps.s2">Fill them in below, click "Test Connection" to verify</span></div>
1554
- <div><span style="color:var(--accent)">3.</span> <span data-i18n="settings.hub.clientSteps.s3">Click "Save Settings", then restart OpenClaw gateway to connect</span></div>
1554
+ <div><span style="color:var(--accent)">3.</span> <span data-i18n="settings.hub.clientSteps.s3">Click "Save Settings", then restart OpenClaw gateway (page refreshes automatically)</span></div>
1555
1555
  </div>
1556
1556
  <div class="settings-grid">
1557
1557
  <div class="settings-field full-width">
@@ -1573,10 +1573,12 @@ input,textarea,select{font-family:inherit;font-size:inherit}
1573
1573
  </div>
1574
1574
  </div>
1575
1575
 
1576
- <div class="settings-card-divider"></div>
1577
- <div id="sharingStatusPanel"></div>
1578
- <div id="sharingTeamPanel"></div>
1579
- <div id="sharingAdminPanel"></div>
1576
+ <div id="sharingPanelsWrap" style="display:none">
1577
+ <div class="settings-card-divider"></div>
1578
+ <div id="sharingStatusPanel"></div>
1579
+ <div id="sharingTeamPanel"></div>
1580
+ <div id="sharingAdminPanel"></div>
1581
+ </div>
1580
1582
 
1581
1583
  <div class="settings-card-divider"></div>
1582
1584
  <div class="settings-actions">
@@ -2063,6 +2065,8 @@ const I18N={
2063
2065
  'settings.reset':'Reset',
2064
2066
  'settings.saved':'Saved',
2065
2067
  'settings.restart.hint':'Some changes require restarting the OpenClaw gateway to take effect.',
2068
+ 'settings.restart.autoRefresh':'Page will refresh automatically after the gateway restarts...',
2069
+ 'settings.restart.waiting':'Configuration saved. Waiting for gateway to restart...',
2066
2070
  'settings.save.fail':'Failed to save settings',
2067
2071
  'settings.save.emb.required':'Embedding model is required. Please configure an embedding model before saving.',
2068
2072
  'settings.save.emb.fail':'Embedding model test failed, cannot save',
@@ -2192,11 +2196,11 @@ const I18N={
2192
2196
  'settings.hub.clientSteps.title':'Quick Setup (3 steps)',
2193
2197
  'settings.hub.clientSteps.s1':'Ask your Hub admin for Hub Address and Team Token',
2194
2198
  'settings.hub.clientSteps.s2':'Fill them in below, click "Test Connection" to verify',
2195
- 'settings.hub.clientSteps.s3':'Click "Save Settings", then restart OpenClaw gateway to connect',
2199
+ 'settings.hub.clientSteps.s3':'Click "Save Settings", then restart OpenClaw gateway (page refreshes automatically)',
2196
2200
  'settings.hub.shareInfo.title':'Share this info with your team members:',
2197
2201
  'settings.hub.shareInfo.yourIP':'your-IP',
2198
2202
  'settings.hub.shareInfo.clickCopy':'Click to copy',
2199
- 'settings.hub.restartAlert':'Hub sharing config saved! Please restart the OpenClaw gateway for changes to take effect.\\n\\nRun: openclaw gateway stop && openclaw gateway',
2203
+ 'settings.hub.restartAlert':'Hub sharing config saved! Please restart the OpenClaw gateway for changes to take effect.\\n\\nRun: openclaw gateway stop && openclaw gateway start',
2200
2204
  'settings.hub.hubAddress':'Hub Address',
2201
2205
  'settings.hub.hubAddress.hint':'Hub server address, e.g. 192.168.1.100:18800',
2202
2206
  'settings.hub.teamTokenClient':'Team Token',
@@ -2409,7 +2413,7 @@ const I18N={
2409
2413
  'update.installing':'Installing...',
2410
2414
  'update.success':'Updated!',
2411
2415
  'update.failed':'Update failed',
2412
- 'update.restarting':'Restarting service...',
2416
+ 'update.restarting':'Restarting service, page will refresh automatically...',
2413
2417
  'update.dismiss':'Dismiss',
2414
2418
  'sharing.disable.confirm.hub':'You are about to shut down the Hub server.\\n\\nWhat will happen:\\n\\u2022 All connected team members will be disconnected\\n\\u2022 They will no longer be able to sync memories, tasks, or skills\\n\\u2022 Shared data is preserved and will be available when you re-enable\\n\\nAre you sure?',
2415
2419
  'sharing.disable.confirm.client':'You are about to disconnect from the team Hub.\\n\\nWhat will happen:\\n\\u2022 You will no longer receive shared memories, tasks, or skills from the team\\n\\u2022 Your local data is preserved and will not be affected\\n\\u2022 You can reconnect later by re-enabling sharing\\n\\nAre you sure?',
@@ -2431,12 +2435,12 @@ const I18N={
2431
2435
  'guide.join.s1':'Ask your Hub admin for the Hub Address and Team Token',
2432
2436
  'guide.join.s2':'Go to Settings \u2192 Hub & Team, enable sharing, select "Client" mode',
2433
2437
  'guide.join.s3':'Fill in Hub Address and Team Token, click "Test Connection"',
2434
- 'guide.join.s4':'Save settings and restart the OpenClaw gateway',
2438
+ 'guide.join.s4':'Save settings and restart the OpenClaw gateway (page refreshes automatically)',
2435
2439
  'guide.join.btn':'\u2192 Configure Client Mode',
2436
2440
  'guide.hub.title':'Start Your Own Hub',
2437
2441
  'guide.hub.desc':'Be the team server. Run a Hub on this device so others can connect and share memories with you.',
2438
2442
  'guide.hub.s1':'Go to Settings \u2192 Hub & Team, enable sharing, select "Hub" mode',
2439
- 'guide.hub.s2':'Set a team name, save settings, and restart the gateway',
2443
+ 'guide.hub.s2':'Set a team name, save settings, and restart the gateway (page refreshes automatically)',
2440
2444
  'guide.hub.s3':'Share the Hub Address and Team Token with your team members',
2441
2445
  'guide.hub.s4':'Approve join requests in the Admin Panel',
2442
2446
  'guide.hub.btn':'\u2192 Configure Hub Mode'
@@ -2650,6 +2654,8 @@ const I18N={
2650
2654
  'settings.reset':'重置',
2651
2655
  'settings.saved':'已保存',
2652
2656
  'settings.restart.hint':'部分设置修改后需要重启 OpenClaw 网关才能生效。',
2657
+ 'settings.restart.autoRefresh':'网关重启后页面将自动刷新...',
2658
+ 'settings.restart.waiting':'配置已保存,正在等待网关重启...',
2653
2659
  'settings.save.fail':'保存设置失败',
2654
2660
  'settings.save.emb.required':'嵌入模型为必填项,请先配置嵌入模型再保存。',
2655
2661
  'settings.save.emb.fail':'嵌入模型测试失败,无法保存',
@@ -2779,11 +2785,11 @@ const I18N={
2779
2785
  'settings.hub.clientSteps.title':'快速配置(3 步)',
2780
2786
  'settings.hub.clientSteps.s1':'向 Hub 管理员获取 Hub 地址和团队令牌',
2781
2787
  'settings.hub.clientSteps.s2':'填入下方,点击"测试连接"验证连通性',
2782
- 'settings.hub.clientSteps.s3':'点击"保存设置",然后重启 OpenClaw 网关即可连接',
2788
+ 'settings.hub.clientSteps.s3':'点击「保存设置」,然后重启 OpenClaw 网关(页面会自动刷新)',
2783
2789
  'settings.hub.shareInfo.title':'请将以下信息分享给团队成员:',
2784
2790
  'settings.hub.shareInfo.yourIP':'你的IP',
2785
2791
  'settings.hub.shareInfo.clickCopy':'点击复制',
2786
- 'settings.hub.restartAlert':'Hub 共享配置已保存!请重启 OpenClaw 网关使配置生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway',
2792
+ 'settings.hub.restartAlert':'Hub 共享配置已保存!请重启 OpenClaw 网关使配置生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway start',
2787
2793
  'settings.hub.hubAddress':'Hub 地址',
2788
2794
  'settings.hub.hubAddress.hint':'Hub 服务器地址,如 192.168.1.100:18800',
2789
2795
  'settings.hub.teamTokenClient':'团队令牌',
@@ -2996,11 +3002,11 @@ const I18N={
2996
3002
  'update.installing':'安装中...',
2997
3003
  'update.success':'更新完成',
2998
3004
  'update.failed':'更新失败',
2999
- 'update.restarting':'正在重启服务...',
3005
+ 'update.restarting':'正在重启服务,页面将自动刷新...',
3000
3006
  'update.dismiss':'关闭',
3001
3007
  'sharing.disable.confirm.hub':'你即将关闭 Hub 服务。\\n\\n关闭后将会:\\n\\u2022 所有已连接的团队成员将断开连接\\n\\u2022 他们将无法继续同步记忆、任务和技能\\n\\u2022 已共享的数据会保留,重新开启后仍可使用\\n\\n确定要关闭吗?',
3002
3008
  'sharing.disable.confirm.client':'你即将断开与团队 Hub 的连接。\\n\\n断开后将会:\\n\\u2022 你将无法再接收团队共享的记忆、任务和技能\\n\\u2022 你的本地数据不受影响,会完整保留\\n\\u2022 之后可以随时重新开启共享来恢复连接\\n\\n确定要断开吗?',
3003
- 'sharing.disable.restartAlert':'共享已关闭。请重启 OpenClaw gateway 使更改生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway start',
3009
+ 'sharing.disable.restartAlert':'共享已关闭。请重启 OpenClaw 网关使更改生效。\\n\\n执行命令:openclaw gateway stop && openclaw gateway start',
3004
3010
  'admin.notEnabled.title':'团队共享尚未开启',
3005
3011
  'admin.notEnabled.desc':'管理面板用于管理团队成员、共享的记忆、任务和技能。使用此功能前,需要先开启 Hub 共享。',
3006
3012
  'admin.notEnabled.setupHub':'配置为 Hub 服务端',
@@ -3018,12 +3024,12 @@ const I18N={
3018
3024
  'guide.join.s1':'向 Hub 管理员索取 Hub 地址和 Team Token',
3019
3025
  'guide.join.s2':'前往「设置 → Hub & Team」,开启共享,选择「Client」模式',
3020
3026
  'guide.join.s3':'填写 Hub 地址和 Team Token,点击「测试连接」',
3021
- 'guide.join.s4':'保存设置并重启 OpenClaw gateway',
3027
+ 'guide.join.s4':'保存设置并重启 OpenClaw 网关(页面会自动刷新)',
3022
3028
  'guide.join.btn':'\u2192 配置 Client 模式',
3023
3029
  'guide.hub.title':'自建 Hub 服务',
3024
3030
  'guide.hub.desc':'将本机作为团队服务端,让其他成员连接过来共享记忆。',
3025
3031
  'guide.hub.s1':'前往「设置 → Hub & Team」,开启共享,选择「Hub」模式',
3026
- 'guide.hub.s2':'设置团队名称,保存设置后重启 gateway',
3032
+ 'guide.hub.s2':'设置团队名称,保存设置后重启网关(页面会自动刷新)',
3027
3033
  'guide.hub.s3':'将 Hub 地址和 Team Token 分享给团队成员',
3028
3034
  'guide.hub.s4':'在管理面板中审批加入请求',
3029
3035
  'guide.hub.btn':'\u2192 配置 Hub 模式'
@@ -3377,11 +3383,14 @@ function renderSharingSettings(data){
3377
3383
  var statusEl=document.getElementById('sharingStatusPanel');
3378
3384
  var teamEl=document.getElementById('sharingTeamPanel');
3379
3385
  var adminEl=document.getElementById('sharingAdminPanel');
3386
+ var panelsWrap=document.getElementById('sharingPanelsWrap');
3380
3387
  if(!statusEl||!teamEl||!adminEl) return;
3381
3388
  if(!data||!data.enabled){
3382
3389
  statusEl.innerHTML='';teamEl.innerHTML='';adminEl.innerHTML='';
3390
+ if(panelsWrap) panelsWrap.style.display='none';
3383
3391
  return;
3384
3392
  }
3393
+ if(panelsWrap) panelsWrap.style.display='';
3385
3394
  var conn=data.connection||{};
3386
3395
  var user=conn.user||{};
3387
3396
  var actualRole=data.role||_sharingRole||'client';
@@ -5628,12 +5637,10 @@ async function saveHubConfig(){
5628
5637
  var ok=await doSaveConfig(cfg, saveBtn, 'hubSaved');
5629
5638
  if(ok){
5630
5639
  loadSharingStatus(false);
5631
- if(sharingEnabled){
5632
- updateHubShareInfo();
5633
- setTimeout(function(){alert(t('settings.hub.restartAlert'));},300);
5634
- }
5635
- if(prevSharingEnabled&&!sharingEnabled){
5636
- setTimeout(function(){alert(t('sharing.disable.restartAlert'));},300);
5640
+ var needsRestart=sharingEnabled||(prevSharingEnabled&&!sharingEnabled);
5641
+ if(sharingEnabled) updateHubShareInfo();
5642
+ if(needsRestart){
5643
+ setTimeout(function(){showRestartOverlay(t('settings.restart.waiting'));},300);
5637
5644
  }
5638
5645
  }
5639
5646
  }
@@ -7182,6 +7189,18 @@ function initViewerTheme(){const s=localStorage.getItem(VIEWER_THEME_KEY);const
7182
7189
  function toggleViewerTheme(){const el=document.documentElement;const cur=el.getAttribute('data-theme')||'dark';const next=cur==='dark'?'light':'dark';el.setAttribute('data-theme',next);localStorage.setItem(VIEWER_THEME_KEY,next);}
7183
7190
  initViewerTheme();
7184
7191
 
7192
+ /* ─── Restart overlay ─── */
7193
+ function showRestartOverlay(msg){
7194
+ var existing=document.getElementById('restartOverlay');
7195
+ if(existing) existing.remove();
7196
+ var ov=document.createElement('div');
7197
+ ov.id='restartOverlay';
7198
+ ov.style.cssText='position:fixed;inset:0;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,.55);backdrop-filter:blur(6px);color:#fff;font-family:inherit';
7199
+ ov.innerHTML='<div style="display:flex;flex-direction:column;align-items:center;gap:16px;max-width:400px;text-align:center"><div style="width:36px;height:36px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite"></div><div style="font-size:15px;font-weight:600">'+esc(msg||t('update.restarting'))+'</div><div id="restartOverlayHint" style="font-size:12px;opacity:.6">'+t('settings.restart.autoRefresh')+'</div></div>';
7200
+ document.body.appendChild(ov);
7201
+ waitForGatewayAndReload(60);
7202
+ }
7203
+
7185
7204
  /* ─── Update check ─── */
7186
7205
  function waitForGatewayAndReload(maxAttempts,attempt){
7187
7206
  attempt=attempt||0;
@@ -7204,8 +7223,7 @@ function doUpdateInstall(packageSpec,btnEl,statusEl){
7204
7223
  if(d.ok){
7205
7224
  btnEl.textContent=t('update.success')+(d.version?' v'+d.version:'');
7206
7225
  btnEl.style.cssText='background:rgba(34,197,94,.15);color:#22c55e;border:1px solid rgba(34,197,94,.3);border-radius:6px;padding:4px 14px;font-size:12px;font-weight:600;cursor:default;white-space:nowrap';
7207
- if(statusEl)statusEl.textContent=t('update.restarting');
7208
- waitForGatewayAndReload(40);
7226
+ showRestartOverlay(t('update.restarting'));
7209
7227
  }else{
7210
7228
  btnEl.textContent=t('update.btn');
7211
7229
  btnEl.style.cssText='background:none;border:1px solid currentColor;border-radius:6px;padding:4px 14px;font-size:12px;font-weight:600;color:inherit;cursor:pointer;white-space:nowrap;opacity:.85';