Files
groot 47c523dd98
All checks were successful
release-tag / release-image (push) Successful in 3m51s
RC-14
2026-08-14 06:17:30 +02:00

16 lines
3.7 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html><html lang="de"><head>
<link rel="icon" href="data:,"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Neural Hunt · Customer Admin</title><link rel="stylesheet" href="/styles.css"></head><body><main>
<div class="eyebrow">NEURAL HUNT · PRIVATE CONTROL PLANE</div><h1>Customer Service Admin</h1><div id="msg" class="msg hidden"></div>
<section id="loginBox"><label>Admin<input id="user" autocomplete="username"></label><label>Passwort<input id="pass" type="password" autocomplete="current-password"></label><button id="login">ANMELDEN</button></section>
<section id="panel" class="hidden"><div class="head"><p>Dieser Listener gehört ausschließlich hinter VPN / privates Netz.</p><button id="logout">ABMELDEN</button></div>
<div class="admin-grid">
<article><h2>Portal-Steuerung</h2><label class="toggle"><input id="loginEnabled" type="checkbox"> Benutzer-Anmeldung erlauben</label><label class="toggle"><input id="registrationEnabled" type="checkbox"> Neue Registrierungen erlauben</label><label class="toggle"><input id="inviteRequired" type="checkbox"> Registrierung nur mit einmaligem Invite-Code</label><label>Anti-Bot Proof-of-Work · Bit<input id="powBits" type="number" min="0" max="24" step="1"></label><p class="small">0 deaktiviert PoW. Für offene Registrierung sind 1620 Bit ein sinnvoller Start; Reverse-Proxy-Limits bleiben zusätzlich empfehlenswert.</p><button id="saveSettings">EINSTELLUNGEN SPEICHERN</button></article>
<article><h2>Credit-Rewards</h2><label>Startguthaben pro neuem Konto · Credits<input id="signupBonus" type="number" min="0" step="0.001"></label><label>Reward pro positivem Worker-Tipp · Credits<input id="positiveBonus" type="number" min="0" step="0.001"></label><p class="small">Positiver Tipp = der signierte Tipp verbessert den persönlichen Best-Score dieses Hosted Workers. Normale Browser-/CLI-Spieler erhalten darüber keine Customer-Credits.</p><button id="saveRewards">REWARDS SPEICHERN</button></article>
<article><h2>Invite-Codes</h2><p class="small">Optionaler Schutz gegen Account-Farming. Jeder Code ist einmalig und wird nur hier bei der Erstellung im Klartext gezeigt.</p><label>Bezeichnung<input id="inviteLabel" placeholder="z. B. Beta Tester"></label><label>Gültigkeit · Stunden<input id="inviteHours" type="number" min="1" max="720" value="24"></label><button id="createInvite">INVITE ERZEUGEN</button><div id="inviteOut" class="invite hidden"></div><div class="small">Aktive, unbenutzte Invites: <strong id="inviteCount">0</strong></div></article>
</div>
<div id="manual" class="notice"></div>
<article class="worker-image-control"><div><h2>Hosted Worker Image</h2><div class="small">Aktuell konfiguriert: <strong id="workerImage"></strong></div><p class="small">„Alle aktualisieren“ pullt das konfigurierte CS_WORKER_IMAGE auf jedem beteiligten Worker-Host erneut und erzeugt die Container auf ihrem zugeordneten Host mit demselben Identity-Volume neu. Laufende Worker werden anschließend automatisch fortgesetzt.</p></div><button id="updateAllImages" class="ghost">IMAGE LADEN · ALLE WORKER AKTUALISIEREN</button></article>
<article class="controller-control"><div class="section-title"><div><h2>Service Controller</h2><p class="small">Orchestrierung: <strong id="orchestrationMode"></strong>. Neue Worker werden im Controller-Modus automatisch auf erreichbare Hosts mit freier Kapazität verteilt. DRAIN verhindert nur neue Zuweisungen; vorhandene Worker bleiben auf ihrem Host.</p></div></div><div id="controllers" class="controller-list"></div></article>
<div class="section-title"><h2>Benutzer</h2><button id="refresh" class="ghost">AKTUALISIEREN</button></div><div id="customers"></div>
</section></main><script src="/app.js" defer></script></body></html>