← back to Robet Site
public/admin.html
40 lines
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>ROBET · Admin — API Keys</title>
<link rel="stylesheet" href="/styles.css" />
</head>
<body>
<header class="topbar">
<a class="logo" href="/">ROBET</a>
<span class="mono" style="text-transform:uppercase">Admin · API Keys</span>
</header>
<div class="admin-shell">
<span class="kicker">/ credentials</span>
<h1 class="sec-h" style="font-size:clamp(30px,6vw,56px)">Enter API keys.</h1>
<p class="mono" style="font-weight:600;margin-bottom:24px">
Stored server-side in <code>data/keys.json</code> (gitignored). Values are never shown back —
only a <code>…last4</code> mask. This page is basic-auth gated.
</p>
<!-- add / update -->
<div class="keyrow" style="grid-template-columns:1fr 1fr auto auto">
<input id="kName" placeholder="KEY NAME (e.g. OPENAI_API_KEY)" autocomplete="off" spellcheck="false" />
<input id="kVal" placeholder="value" type="password" autocomplete="off" spellcheck="false" />
<button type="button" class="btn" id="toggleVal" aria-pressed="false" aria-label="Show value" title="Show / hide value">show</button>
<button class="btn" id="saveBtn" disabled>Save</button>
</div>
<div class="formmsg" id="hint" style="margin:8px 0 0; opacity:.8">Name: letters, digits, underscores only. Value required.</div>
<div class="formmsg" id="msg" role="status" aria-live="polite" aria-atomic="true" style="margin:8px 0 28px"></div>
<!-- stored keys -->
<div class="keytable" id="table"></div>
</div>
<script src="/admin.js"></script>
</body>
</html>