2026-09-30 08:47:33 +00:00
|
|
|
<!doctype html>
|
|
|
|
|
<html lang="en">
|
|
|
|
|
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="utf-8">
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
|
<title>Wolloseum | Player</title>
|
|
|
|
|
<link rel="stylesheet" href="/assets/app.css">
|
2026-10-01 19:02:55 +00:00
|
|
|
<script>try { var t = localStorage.getItem('wolloseum.theme'); if (t) document.documentElement.dataset.theme = t; } catch (_) { }</script>
|
2026-09-30 08:47:33 +00:00
|
|
|
<script src="/assets/app.js" defer></script>
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body data-page="user">
|
|
|
|
|
<div class="shell">
|
|
|
|
|
<header class="topbar">
|
|
|
|
|
<a class="brand" href="/"><span class="brand-mark">W</span> WOLLOSEUM</a>
|
|
|
|
|
<nav class="nav"><a href="/" aria-current="page">Player</a><a href="/viewer">Live viewer</a><a
|
2026-10-01 19:02:55 +00:00
|
|
|
href="/admin">Admin</a><button id="theme-toggle" class="icon-button secondary button" type="button"
|
|
|
|
|
aria-label="Toggle dark mode">☽</button></nav>
|
2026-09-30 08:47:33 +00:00
|
|
|
</header>
|
|
|
|
|
<main>
|
|
|
|
|
<section id="login-panel" class="panel login-panel">
|
|
|
|
|
<div class="accent-band"></div>
|
|
|
|
|
<div class="panel-body">
|
2026-10-01 19:02:55 +00:00
|
|
|
<p class="eyebrow">Identity access</p>
|
|
|
|
|
<h2>Sign in with your identity bundle</h2>
|
|
|
|
|
<p class="login-note">Your JSON bundle signs a one-time challenge locally. Its private key never leaves this
|
|
|
|
|
browser.</p>
|
2026-09-30 08:47:33 +00:00
|
|
|
<form id="login-form" class="form-grid">
|
2026-10-01 19:02:55 +00:00
|
|
|
<input id="identity-bundle" class="hidden" type="file" accept=".json,application/json">
|
|
|
|
|
<div class="actions"><button id="login-button" class="button" type="button">Login</button></div>
|
2026-09-30 08:47:33 +00:00
|
|
|
<p id="login-message" class="message" role="status"></p>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
<section id="user-app" class="hidden">
|
|
|
|
|
<div class="page-head">
|
|
|
|
|
<div>
|
|
|
|
|
<p class="eyebrow">Player console | <span id="account-name"></span></p>
|
|
|
|
|
<h1>Your agent</h1>
|
|
|
|
|
<p class="lede">Manage the WASM module associated with your identity.</p>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="actions"><span id="game-status" class="status-chip"><i class="status-dot"></i><span
|
|
|
|
|
id="game-status-label">CONNECTING</span></span><button id="logout-button" class="button secondary"
|
|
|
|
|
type="button">Sign out</button></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="layout">
|
|
|
|
|
<div class="main-column">
|
|
|
|
|
<section class="panel">
|
|
|
|
|
<div class="panel-head">
|
|
|
|
|
<h2>Agent module</h2><span class="panel-kicker">WASM | MAX 1 MiB</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="panel-body stack">
|
|
|
|
|
<div class="stat-row">
|
|
|
|
|
<div class="stat">
|
2026-10-01 09:40:30 +00:00
|
|
|
<div class="stat-label">Active module</div>
|
2026-09-30 08:47:33 +00:00
|
|
|
<div id="agent-digest" class="stat-value small">Loading...</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="stat">
|
2026-10-01 09:40:30 +00:00
|
|
|
<div class="stat-label">Queued module</div>
|
|
|
|
|
<div id="queued-agent-digest" class="stat-value small">None</div>
|
2026-09-30 08:47:33 +00:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<form id="agent-form" class="stack">
|
|
|
|
|
<div class="field"><label for="agent-file">Compiled agent</label><input id="agent-file" type="file"
|
|
|
|
|
accept=".wasm,application/wasm" required></div>
|
|
|
|
|
<div class="actions"><button class="button" type="submit">Upload agent</button>
|
|
|
|
|
<p id="agent-message" class="message" role="status"></p>
|
|
|
|
|
</div>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
</div>
|
|
|
|
|
<aside class="side-column">
|
|
|
|
|
<section class="panel">
|
|
|
|
|
<div class="panel-head">
|
|
|
|
|
<h2>Identity</h2>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="panel-body stack"><span id="player-id" class="key-id"></span>
|
|
|
|
|
<p class="side-note">Your browser stores the session token. The private key is read only when you sign
|
|
|
|
|
in.</p>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
</aside>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
</main>
|
|
|
|
|
<footer><span>WOLLOSEUM | PLAYER</span><span>Ed25519 identity</span></footer>
|
|
|
|
|
</div>
|
|
|
|
|
</body>
|
|
|
|
|
|
|
|
|
|
</html>
|