Skip to content

Commit 6a1b8b3

Browse files
committed
feat(dashboard): merge admin API key field into server bind card
The current-admin-key input now lives inside the server bind card instead of a separate card, keeping the same DOM ids and toggling.
1 parent 1bd236e commit 6a1b8b3

1 file changed

Lines changed: 1 addition & 2 deletions

File tree

src/dashboard.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ export function dashboardHtml(initialConfig: unknown = null): string {
4444
<div class="status"><span class="pill"><i id="dot" class="dot"></i><span id="online" data-state="checking">확인 중</span></span><div id="bridgeVersion" class="small">v${BRIDGE_VERSION}</div></div>
4545
</header>
4646
<section class="grid">
47-
<section id="adminAuthWrap" class="card" hidden><h2 data-i18n="currentAdminApiKey">현재 Admin API Key</h2><div class="field"><input id="adminAuthKey" type="password" autocomplete="current-password" spellcheck="false" data-i18n-placeholder="adminAuthPlaceholder" placeholder="현재 설정된 key" /><span class="bridge-key-help" data-i18n="adminAuthHelp">기존 사용자는 현재 key를 한 번 입력하면 저장·재시작 인증에 사용됩니다.</span></div></section>
48-
<section class="card"><h2><span data-i18n="serverBind">서버 바인드</span> <span class="sub" data-i18n="afterRestart">재시작 후 적용</span></h2><div class="bind-grid"><div class="field"><label data-i18n="bindHost">바인드 호스트</label><select id="bindHost"><option value="127.0.0.1" data-i18n="localBindOption">127.0.0.1 · 로컬 전용</option><option value="0.0.0.0">0.0.0.0 · LAN/Tailscale</option></select></div><div class="field"><label data-i18n="port">포트</label><input id="bindPort" type="number" min="1" max="65535" /></div></div><div id="bridgeKeyWrap" class="field bridge-key"><label data-i18n="clientApiKey">클라이언트 API Key</label><div class="bridge-key-row"><span class="bridge-key-prefix">sk-</span><input id="bridgeApiKey" type="text" autocomplete="off" spellcheck="false" data-i18n-placeholder="bridgeKeyPlaceholder" placeholder="cmdbr-랜덤6 · 복사/수정 가능" /></div><div class="bridge-key-help-row"><span class="bridge-key-help" data-i18n="bridgeKeyHelp">외부 /v1 호출용 key</span><button id="generateBridgeKey" class="secondary" type="button" data-i18n-aria="generateClientApiKey" aria-label="클라이언트 API Key 생성">🎲</button><button id="copyBridgeKey" class="secondary" type="button" data-i18n-aria="copyClientApiKey" aria-label="클라이언트 API Key 복사">📋</button><button id="saveBridgeKey" class="secondary" type="button" data-i18n-aria="saveClientApiKey" aria-label="클라이언트 API Key 저장">💾</button></div></div></section>
47+
<section class="card"><h2><span data-i18n="serverBind">서버 바인드</span> <span class="sub" data-i18n="afterRestart">재시작 후 적용</span></h2><div class="bind-grid"><div class="field"><label data-i18n="bindHost">바인드 호스트</label><select id="bindHost"><option value="127.0.0.1" data-i18n="localBindOption">127.0.0.1 · 로컬 전용</option><option value="0.0.0.0">0.0.0.0 · LAN/Tailscale</option></select></div><div class="field"><label data-i18n="port">포트</label><input id="bindPort" type="number" min="1" max="65535" /></div></div><div id="adminAuthWrap" class="bridge-key" hidden><div class="field"><label data-i18n="currentAdminApiKey">현재 Admin API Key</label><input id="adminAuthKey" type="password" autocomplete="current-password" spellcheck="false" data-i18n-placeholder="adminAuthPlaceholder" placeholder="현재 설정된 key" /><span class="bridge-key-help" data-i18n="adminAuthHelp">기존 사용자는 현재 key를 한 번 입력하면 저장·재시작 인증에 사용됩니다.</span></div></div><div id="bridgeKeyWrap" class="field bridge-key"><label data-i18n="clientApiKey">클라이언트 API Key</label><div class="bridge-key-row"><span class="bridge-key-prefix">sk-</span><input id="bridgeApiKey" type="text" autocomplete="off" spellcheck="false" data-i18n-placeholder="bridgeKeyPlaceholder" placeholder="cmdbr-랜덤6 · 복사/수정 가능" /></div><div class="bridge-key-help-row"><span class="bridge-key-help" data-i18n="bridgeKeyHelp">외부 /v1 호출용 key</span><button id="generateBridgeKey" class="secondary" type="button" data-i18n-aria="generateClientApiKey" aria-label="클라이언트 API Key 생성">🎲</button><button id="copyBridgeKey" class="secondary" type="button" data-i18n-aria="copyClientApiKey" aria-label="클라이언트 API Key 복사">📋</button><button id="saveBridgeKey" class="secondary" type="button" data-i18n-aria="saveClientApiKey" aria-label="클라이언트 API Key 저장">💾</button></div></div></section>
4948
<section class="card"><h2><span data-i18n="routingPolicy">라우팅 정책</span> <span class="sub" data-i18n="defaultDailyBurn">기본값: 일일 소진</span></h2><p class="routing-guidance" data-i18n="expiryPriorityNote">남은 기간이 1일 이하인 자격 증명은 선택한 라우팅 정책보다 먼저 소진됩니다.</p><div id="policies" class="seg"></div><div class="one-line-field concurrency-row"><label for="maxPer" data-i18n="concurrencyLabel">키당 동시 요청</label><input id="maxPer" type="number" min="1" value="4" /><span data-i18n="timesUnit">회</span><span class="concurrency-spacer" aria-hidden="true"></span><span id="concurrencyInfo" class="info" tabindex="0" data-i18n-aria="concurrencyInfoAria" aria-label="키당 동시 요청 설명">ℹ️<span class="tip"><span data-i18n="concurrencyTip">운영 기본값은 키당 4회입니다. 등록된 key별로 이 값까지만 병렬 요청을 보냅니다.</span></span></span></div></section>
5049
<section class="card wide"><h2><span data-i18n="credentials">자격 증명</span> <span class="row"><button id="refreshCreds" class="secondary" data-i18n="refresh">새로고침</button><button id="addCred" class="secondary" data-i18n="addKey">키 추가</button></span></h2><div id="creds" class="stack creds"></div></section>
5150
<section class="card wide"><h2><span data-i18n="models">모델</span> <span class="sub" data-i18n="onOffAfterRestart">재시작 후 on/off 적용</span></h2><div id="models" class="stack models"></div></section>

0 commit comments

Comments
 (0)