Align launcher copy to EDUT ID and add inline glossary help
Some checks are pending
check / launcher (push) Waiting to run
Some checks are pending
check / launcher (push) Waiting to run
This commit is contained in:
parent
96cbba87ca
commit
d9f963f1b0
28
app/app.js
28
app/app.js
@ -649,7 +649,7 @@ async function onSendMembershipTx() {
|
||||
params: [txRequest],
|
||||
});
|
||||
$("confirmTxHash").value = txHash;
|
||||
logLine("membership tx sent", {
|
||||
logLine("EDUT ID tx sent", {
|
||||
quote_id: state.lastQuote.quote_id,
|
||||
tx_hash: txHash,
|
||||
payer_wallet: from,
|
||||
@ -733,7 +733,7 @@ async function onStatus() {
|
||||
if (out.designation_code) {
|
||||
$("designationCode").value = out.designation_code;
|
||||
}
|
||||
logLine("membership status", out);
|
||||
logLine("EDUT ID status", out);
|
||||
refreshOverview(out);
|
||||
return out;
|
||||
}
|
||||
@ -761,7 +761,7 @@ async function onQuote() {
|
||||
$("quoteId").value = out.quote_id || "";
|
||||
$("quoteValue").value = out.value || "";
|
||||
$("quotePayer").value = out.payer_wallet || "";
|
||||
logLine("membership quote", out);
|
||||
logLine("EDUT ID quote", out);
|
||||
return out;
|
||||
}
|
||||
|
||||
@ -795,14 +795,14 @@ async function onConfirmMembership() {
|
||||
identity_attested_by: out.identity_attested_by || "",
|
||||
identity_attestation_id: out.identity_attestation_id || "",
|
||||
};
|
||||
logLine("membership confirm", out);
|
||||
logLine("EDUT ID confirm", out);
|
||||
return out;
|
||||
}
|
||||
|
||||
async function requireMembershipState(actionLabel, opts = {}) {
|
||||
const status = await onStatus();
|
||||
if (String(status.status || "").toLowerCase() !== "active") {
|
||||
throw new Error(`${actionLabel} requires active membership`);
|
||||
throw new Error(`${actionLabel} requires active EDUT ID`);
|
||||
}
|
||||
if (opts.requireOnramp && !isOnrampAttested(status.identity_assurance_level)) {
|
||||
throw new Error(`${actionLabel} requires onramp_attested identity assurance`);
|
||||
@ -846,17 +846,17 @@ async function confirmMembershipWithRetry(maxAttempts = 8, intervalMs = 2500) {
|
||||
await sleep(intervalMs);
|
||||
}
|
||||
}
|
||||
throw lastErr || new Error("membership confirm failed");
|
||||
throw lastErr || new Error("EDUT ID confirmation failed");
|
||||
}
|
||||
|
||||
async function onRunMembershipFlow() {
|
||||
setFlowStatus("connecting wallet");
|
||||
await onConnectWallet();
|
||||
|
||||
setFlowStatus("checking membership");
|
||||
setFlowStatus("checking EDUT ID");
|
||||
const status = await onStatus();
|
||||
if (String(status.status || "").toLowerCase() === "active") {
|
||||
setFlowStatus("membership already active");
|
||||
setFlowStatus("EDUT ID already active");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -866,9 +866,9 @@ async function onRunMembershipFlow() {
|
||||
await onSignIntent();
|
||||
setFlowStatus("verifying intent");
|
||||
await onVerify();
|
||||
setFlowStatus("quoting membership");
|
||||
setFlowStatus("quoting EDUT ID");
|
||||
await onQuote();
|
||||
setFlowStatus("sending membership transaction");
|
||||
setFlowStatus("sending EDUT ID transaction");
|
||||
await onSendMembershipTx();
|
||||
|
||||
const txHash = $("confirmTxHash").value.trim();
|
||||
@ -877,14 +877,14 @@ async function onRunMembershipFlow() {
|
||||
}
|
||||
setFlowStatus("waiting for chain confirmation");
|
||||
await waitForTxMined(txHash);
|
||||
setFlowStatus("confirming membership with API");
|
||||
setFlowStatus("confirming EDUT ID with API");
|
||||
await confirmMembershipWithRetry();
|
||||
setFlowStatus("refreshing status");
|
||||
const refreshed = await onStatus();
|
||||
if (isOnrampAttested(refreshed.identity_assurance_level)) {
|
||||
setFlowStatus("membership flow complete (attested)");
|
||||
setFlowStatus("EDUT ID flow complete (attested)");
|
||||
} else {
|
||||
setFlowStatus("membership active (unattested)");
|
||||
setFlowStatus("EDUT ID active (unattested)");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1150,7 +1150,7 @@ async function onQuickActivate() {
|
||||
async function onQuickRefresh() {
|
||||
const status = await onStatus();
|
||||
if (String(status.status || "").toLowerCase() !== "active") {
|
||||
setFlowStatus("membership inactive");
|
||||
setFlowStatus("EDUT ID inactive");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
|
||||
@ -3,21 +3,21 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>EDUT Launcher</title>
|
||||
<title>EDUT ID Manager</title>
|
||||
<link rel="stylesheet" href="./style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<main class="shell">
|
||||
<header class="hero">
|
||||
<h1>EDUT Launcher</h1>
|
||||
<p>Deterministic infrastructure control surface.</p>
|
||||
<h1>EDUT ID Manager</h1>
|
||||
<p>Deterministic identity, access, and control surface.</p>
|
||||
</header>
|
||||
|
||||
<section class="panel">
|
||||
<h2>Control Surface</h2>
|
||||
<div class="actions">
|
||||
<button id="btnQuickConnect">Connect wallet</button>
|
||||
<button id="btnQuickActivate">Activate membership</button>
|
||||
<button id="btnQuickActivate">Activate EDUT ID</button>
|
||||
<button id="btnQuickRefresh">Refresh status + feed</button>
|
||||
<button id="btnQuickInstallStatus">Governance status</button>
|
||||
<button id="btnRefreshBalances">Refresh balances</button>
|
||||
@ -40,7 +40,7 @@
|
||||
<p id="summaryFunds">-- ETH | -- USDC</p>
|
||||
</article>
|
||||
<article class="stat">
|
||||
<h3>Membership</h3>
|
||||
<h3><span class="term-inline">EDUT ID<details class="inline-help"><summary aria-label="What is EDUT ID?">?</summary><p>EDUT ID is your one-time identity credential used for checkout, activation, and ownership proof.</p></details></span></h3>
|
||||
<p id="summaryMembership">unknown</p>
|
||||
</article>
|
||||
<article class="stat">
|
||||
@ -48,11 +48,11 @@
|
||||
<p id="summaryMode">human_manual</p>
|
||||
</article>
|
||||
<article class="stat">
|
||||
<h3>Designation</h3>
|
||||
<h3><span class="term-inline">Designation<details class="inline-help"><summary aria-label="What is designation?">?</summary><p>Designation is the protocol reference created during wallet intent and carried through activation evidence.</p></details></span></h3>
|
||||
<p id="summaryDesignation">-</p>
|
||||
</article>
|
||||
<article class="stat">
|
||||
<h3>Identity Assurance</h3>
|
||||
<h3><span class="term-inline">Identity Assurance<details class="inline-help"><summary aria-label="What is identity assurance?">?</summary><p>Assurance level records how identity was attested, such as direct crypto flow or on-ramp attestation.</p></details></span></h3>
|
||||
<p id="summaryAssurance">unknown</p>
|
||||
</article>
|
||||
<article class="stat">
|
||||
@ -110,16 +110,16 @@
|
||||
</section>
|
||||
|
||||
<section class="subpanel">
|
||||
<h2>Membership Flow Controls</h2>
|
||||
<h2>EDUT ID Flow Controls</h2>
|
||||
<div class="actions">
|
||||
<button id="btnRunMembershipFlow">Run membership flow</button>
|
||||
<button id="btnRunMembershipFlow">Run EDUT ID flow</button>
|
||||
<button id="btnConnectWallet">Connect wallet</button>
|
||||
<button id="btnIntent">Create intent</button>
|
||||
<button id="btnSignIntent">Sign intent (EIP-712)</button>
|
||||
<button id="btnVerify">Verify signature</button>
|
||||
<button id="btnRefreshSession">Refresh session</button>
|
||||
<button id="btnRevokeSession">Revoke session</button>
|
||||
<button id="btnStatus">Membership status</button>
|
||||
<button id="btnStatus">EDUT ID status</button>
|
||||
</div>
|
||||
<div class="grid three">
|
||||
<label>
|
||||
@ -160,8 +160,8 @@
|
||||
<div class="actions">
|
||||
<button id="btnQuote">Get quote</button>
|
||||
<button id="btnSignPayerProof">Sign payer proof</button>
|
||||
<button id="btnSendMembershipTx">Send membership tx</button>
|
||||
<button id="btnConfirmMembership">Confirm membership tx</button>
|
||||
<button id="btnSendMembershipTx">Send EDUT ID tx</button>
|
||||
<button id="btnConfirmMembership">Confirm EDUT ID tx</button>
|
||||
</div>
|
||||
<div class="grid three">
|
||||
<label>
|
||||
|
||||
@ -53,6 +53,51 @@ body {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.term-inline {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.inline-help {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.inline-help > summary {
|
||||
list-style: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
line-height: 14px;
|
||||
font-size: 10px;
|
||||
color: var(--muted);
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
background: #0f1828;
|
||||
}
|
||||
|
||||
.inline-help > summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.inline-help > p {
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 0;
|
||||
width: min(300px, 80vw);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 8px;
|
||||
background: #0f1828;
|
||||
color: var(--text);
|
||||
padding: 8px;
|
||||
font-size: 11px;
|
||||
line-height: 1.45;
|
||||
z-index: 30;
|
||||
}
|
||||
|
||||
.note {
|
||||
margin: 0 0 10px;
|
||||
color: var(--muted);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user