@wendongfly/myhi 1.3.35 → 1.3.37

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/dist/index.html CHANGED
@@ -419,7 +419,6 @@
419
419
  <div style="display:flex;align-items:center;gap:0.6rem">
420
420
  <span id="user-name" style="font-size:0.8rem;color:var(--muted)"></span>
421
421
  <button id="usage-btn" onclick="showUsage()" style="background:none;border:1px solid var(--border);color:var(--muted);font-size:0.75rem;padding:0.3rem 0.6rem;border-radius:6px;cursor:pointer;width:auto">用量</button>
422
- <button id="settings-btn" onclick="openGatewaySheet()" style="display:none;background:none;border:1px solid var(--border);color:var(--muted);font-size:0.75rem;padding:0.3rem 0.6rem;border-radius:6px;cursor:pointer;width:auto">设置</button>
423
422
  <button id="logout-btn" onclick="doLogout()" style="display:none;background:none;border:1px solid var(--border);color:var(--muted);font-size:0.75rem;padding:0.3rem 0.6rem;border-radius:6px;cursor:pointer;width:auto">退出</button>
424
423
  <div id="conn-dot"></div>
425
424
  </div>
@@ -438,32 +437,6 @@
438
437
  </div>
439
438
  </div>
440
439
 
441
- <!-- Gateway settings sheet -->
442
- <div id="gw-backdrop" onclick="closeGatewaySheet()" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.55);z-index:40"></div>
443
- <style>#gw-backdrop.open { display:block; } #gw-sheet { position:fixed; bottom:-100%; left:0; right:0; background:var(--surface); border-top-left-radius:18px; border-top-right-radius:18px; padding:1rem 1.1rem 1.4rem; z-index:41; transition:bottom 0.25s ease; max-width:500px; margin:0 auto; } #gw-sheet.open { bottom:0; }</style>
444
- <div id="gw-sheet">
445
- <div class="sheet-handle"></div>
446
- <div class="sheet-title">大模型网关配置</div>
447
- <div style="font-size:0.78rem;color:var(--muted);margin-bottom:0.8rem;line-height:1.5">
448
- 配置后,新建的 Claude 会话将自动使用此网关。<br>
449
- 对应环境变量:<code style="background:var(--bg);padding:0.1em 0.3em;border-radius:3px">ANTHROPIC_BASE_URL</code> / <code style="background:var(--bg);padding:0.1em 0.3em;border-radius:3px">ANTHROPIC_API_KEY</code>
450
- </div>
451
- <div class="field">
452
- <label>网关 URL</label>
453
- <input id="gw-url" type="text" placeholder="https://your-gateway.example.com" autocomplete="off" spellcheck="false">
454
- </div>
455
- <div class="field">
456
- <label>Token <span style="font-weight:400;text-transform:none">(API Key)</span></label>
457
- <div style="display:flex;gap:0.5rem">
458
- <input id="gw-key" type="password" placeholder="sk-ant-... 或留空保持不变" autocomplete="off" spellcheck="false" style="flex:1">
459
- <button onclick="clearGatewayKey()" type="button" style="flex-shrink:0;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:0 0.75rem;color:var(--muted);font-size:0.75rem;cursor:pointer">清空</button>
460
- </div>
461
- </div>
462
- <button onclick="saveGateway()" style="width:100%;margin-top:0.5rem">保存</button>
463
- <button onclick="closeGatewaySheet()" style="width:100%;background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:10px;padding:0.7rem;font-size:0.85rem;cursor:pointer;margin-top:0.5rem">取消</button>
464
- <div id="gw-msg" style="text-align:center;font-size:0.78rem;color:var(--muted);margin-top:0.6rem;min-height:1.2em"></div>
465
- </div>
466
-
467
440
  <!-- FAB -->
468
441
  <button id="fab" onclick="openSheet()">+</button>
469
442
 
@@ -550,7 +523,6 @@
550
523
 
551
524
  // 加载当前用户信息(独占模式显示用户名、退出按钮、锁定目录)
552
525
  let _userDir = null;
553
- let _isAdmin = false;
554
526
  fetch('/api/me').then(r => r.json()).then(data => {
555
527
  if ((data.exclusive || data.hasUsers) && data.name) {
556
528
  document.getElementById('user-name').textContent = data.name;
@@ -563,63 +535,8 @@
563
535
  document.getElementById('drive-bar').style.display = 'none';
564
536
  renderRecentDirs();
565
537
  }
566
- _isAdmin = data.role === 'admin';
567
- if (_isAdmin) document.getElementById('settings-btn').style.display = '';
568
538
  }).catch(() => {});
569
539
 
570
- // ── 大模型网关配置 ─────────────────────────────────
571
- window.openGatewaySheet = async function() {
572
- document.getElementById('gw-backdrop').classList.add('open');
573
- document.getElementById('gw-sheet').classList.add('open');
574
- document.getElementById('gw-msg').textContent = '';
575
- try {
576
- const r = await fetch('/api/gateway');
577
- if (!r.ok) throw new Error('权限不足');
578
- const d = await r.json();
579
- document.getElementById('gw-url').value = d.baseUrl || '';
580
- document.getElementById('gw-key').value = d.apiKey || '';
581
- document.getElementById('gw-key').dataset.masked = d.hasKey ? '1' : '';
582
- } catch (e) {
583
- document.getElementById('gw-msg').textContent = '加载失败: ' + e.message;
584
- }
585
- };
586
- window.closeGatewaySheet = function() {
587
- document.getElementById('gw-backdrop').classList.remove('open');
588
- document.getElementById('gw-sheet').classList.remove('open');
589
- };
590
- window.saveGateway = async function() {
591
- const baseUrl = document.getElementById('gw-url').value.trim();
592
- let apiKey = document.getElementById('gw-key').value.trim();
593
- // 如果用户没改(还是掩码),后端会保留原值
594
- const msg = document.getElementById('gw-msg');
595
- msg.textContent = '保存中...';
596
- try {
597
- const r = await fetch('/api/gateway', {
598
- method: 'POST',
599
- headers: { 'Content-Type': 'application/json' },
600
- body: JSON.stringify({ baseUrl, apiKey }),
601
- });
602
- const d = await r.json();
603
- if (d.ok) {
604
- msg.style.color = '#3fb950';
605
- msg.textContent = '已保存。下次新建 Claude 会话自动生效';
606
- setTimeout(() => closeGatewaySheet(), 1200);
607
- } else {
608
- msg.style.color = '#f85149';
609
- msg.textContent = '保存失败: ' + (d.error || '未知错误');
610
- }
611
- } catch (e) {
612
- msg.style.color = '#f85149';
613
- msg.textContent = '保存失败: ' + e.message;
614
- }
615
- };
616
- window.clearGatewayKey = function() {
617
- const inp = document.getElementById('gw-key');
618
- inp.value = '';
619
- inp.dataset.masked = '';
620
- inp.focus();
621
- };
622
-
623
540
  async function showUsage() {
624
541
  try {
625
542
  const res = await fetch('/api/usage');