`).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)}
-