launcher/app/index.html

218 lines
6.2 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>EDUT Launcher Shell</title>
<link rel="stylesheet" href="./style.css" />
</head>
<body>
<main class="shell">
<header class="hero">
<h1>EDUT Launcher</h1>
<p>Wallet-first onboarding shell (local integration harness)</p>
</header>
<section class="panel">
<h2>Connection</h2>
<div class="grid two">
<label>
API base URL
<input id="apiBase" value="http://127.0.0.1:8080" />
</label>
<label>
Chain ID
<input id="chainId" type="number" value="84532" />
</label>
</div>
</section>
<section class="panel">
<h2>Wallet Intent</h2>
<div class="grid three">
<label>
Wallet
<input id="walletAddress" placeholder="0x..." />
</label>
<label>
Origin
<input id="walletOrigin" value="https://edut.ai" />
</label>
<label>
Locale
<input id="walletLocale" value="en" />
</label>
</div>
<div class="actions">
<button id="btnIntent">Create intent</button>
<button id="btnStatus">Membership status</button>
</div>
<div class="grid three">
<label>
Intent ID
<input id="intentId" />
</label>
<label>
Designation code
<input id="designationCode" />
</label>
<label>
Display token
<input id="displayToken" />
</label>
</div>
<label>
Signature (EIP-712)
<textarea id="walletSignature" rows="2" placeholder="0x..."></textarea>
</label>
<div class="actions">
<button id="btnVerify">Verify signature</button>
</div>
</section>
<section class="panel">
<h2>Membership Quote + Confirm</h2>
<div class="grid three">
<label>
Payer wallet (optional)
<input id="payerWallet" placeholder="0x..." />
</label>
<label>
Payer proof (optional)
<input id="payerProof" placeholder="0x..." />
</label>
<label>
Sponsor org root (optional)
<input id="sponsorOrgRoot" placeholder="org_root_id" />
</label>
</div>
<div class="actions">
<button id="btnQuote">Get quote</button>
</div>
<div class="grid three">
<label>
Quote ID
<input id="quoteId" />
</label>
<label>
Tx value
<input id="quoteValue" />
</label>
<label>
Payer used
<input id="quotePayer" />
</label>
</div>
<label>
Confirm tx hash
<input id="confirmTxHash" placeholder="0x..." />
</label>
<div class="actions">
<button id="btnConfirmMembership">Confirm membership tx</button>
</div>
</section>
<section class="panel">
<h2>Member Channel</h2>
<div class="grid three">
<label>
Device ID
<input id="deviceId" value="desktop-local-01" />
</label>
<label>
Platform
<select id="platform">
<option>desktop</option>
<option>ios</option>
<option>android</option>
</select>
</label>
<label>
App version
<input id="appVersion" value="0.1.0" />
</label>
</div>
<div class="grid three">
<label>
Org root ID
<input id="orgRootId" value="org.local.root" />
</label>
<label>
Principal ID
<input id="principalId" value="human.local" />
</label>
<label>
Principal role
<select id="principalRole">
<option>org_root_owner</option>
<option>workspace_member</option>
</select>
</label>
</div>
<div class="actions">
<button id="btnRegisterChannel">Register channel</button>
<button id="btnUnregisterChannel">Unregister channel</button>
</div>
<div class="grid two">
<label>
Cursor
<input id="eventCursor" />
</label>
<label>
Limit
<input id="eventLimit" type="number" value="25" />
</label>
</div>
<div class="actions">
<button id="btnPollEvents">Poll events</button>
</div>
<div id="eventList" class="event-list"></div>
<label>
Support summary (owner only)
<input id="supportSummary" value="Need diagnostics snapshot." />
</label>
<div class="actions">
<button id="btnSupportTicket">Open support ticket</button>
</div>
</section>
<section class="panel">
<h2>Governance Install + Lease</h2>
<div class="actions">
<button id="btnInstallToken">Issue install token</button>
<button id="btnInstallStatus">Install status</button>
</div>
<div class="grid three">
<label>
Install token
<input id="installToken" />
</label>
<label>
Entitlement ID
<input id="entitlementId" />
</label>
<label>
Runtime version
<input id="runtimeVersion" />
</label>
</div>
<label>
Package hash
<input id="packageHash" />
</label>
<div class="actions">
<button id="btnInstallConfirm">Confirm install</button>
<button id="btnLeaseHeartbeat">Lease heartbeat</button>
<button id="btnOfflineRenew">Offline renew</button>
</div>
</section>
<section class="panel">
<h2>Response Log</h2>
<pre id="log"></pre>
</section>
</main>
<script src="./app.js"></script>
</body>
</html>