diff --git a/public/app.js b/public/app.js index 358fd12..2799dc1 100644 --- a/public/app.js +++ b/public/app.js @@ -627,11 +627,11 @@ function renderCredentialsPane(customer) { const data = customerFormState.credentials; if (!data) { pane.innerHTML = '
加载中…
'; return; } const creds = data.credentials || {}; - const bindings = (data.bindings || []).map((entry) => `
-
${esc(entry.nodeName)}${esc(statusText[entry.status] || entry.status)}${esc(entry.protocol)}
- ${entry.username ? credRowHTML('用户名', entry.username) : ''} - ${entry.realityPublicKey ? credRowHTML('Reality 公钥', entry.realityPublicKey) : ''} -
`).join(''); + // Round-3 item 15: the per-binding list (node name / status / protocol + // / Reality public key) is gone — the tab shows only the subscription + // token and the one shared credential set. Reality keys live on the + // node edit form now (item 17); the socks username lives on the node + // (item 21). Backend payload unchanged. pane.innerHTML = `
订阅
订阅令牌${esc(data.subscriptionToken || '—')} @@ -640,8 +640,7 @@ function renderCredentialsPane(customer) { ${credRowHTML('UUID', creds.clientId)} ${credRowHTML('密码', creds.password)} ${credRowHTML('Reality Short ID', creds.shortId)} -
- ${bindings || '
尚未关联节点
'}`; +
`; } function linkStatusLine(customer, source) {