From 539dd53677f0ee7ae98e58ba512b1e2c9619b12c Mon Sep 17 00:00:00 2001 From: Dorian Date: Thu, 19 Mar 2026 20:59:42 +0000 Subject: [PATCH] fix: DID sync between Web5 and Federation, cloud peer names - Web5 loads node DID from backend on mount (authoritative, survives rotation) - Federation rotation updates localStorage so Web5 picks up new DID - Cloud peer names: peerDisplayName() "Node-XXXX" instead of raw DID - Cloud hides onion addresses from peer cards - Sync timeout increased to 180s with better error message Co-Authored-By: Claude Opus 4.6 (1M context) --- neode-ui/src/views/Federation.vue | 2 ++ neode-ui/src/views/Web5.vue | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/neode-ui/src/views/Federation.vue b/neode-ui/src/views/Federation.vue index 6cb9321d..f6812844 100644 --- a/neode-ui/src/views/Federation.vue +++ b/neode-ui/src/views/Federation.vue @@ -865,6 +865,8 @@ async function rotateDid() { }>({ method: 'node.rotate-did', params: { password: rotatePassword.value } }) selfDid.value = result.new_did + // Sync with Web5 view's localStorage DID + try { localStorage.setItem('neode_did', result.new_did) } catch { /* noop */ } rotateSuccess.value = `DID rotated. Notifying peers...` // Notify federation peers diff --git a/neode-ui/src/views/Web5.vue b/neode-ui/src/views/Web5.vue index d280e8b1..3ff16096 100644 --- a/neode-ui/src/views/Web5.vue +++ b/neode-ui/src/views/Web5.vue @@ -3768,6 +3768,13 @@ async function deleteIdentity() { onMounted(() => { web5AnimationDone = true + // Load the authoritative node DID from the backend (survives rotation) + rpcClient.getNodeDid().then(res => { + if (res.did && res.did !== storedDid.value) { + storedDid.value = res.did + try { localStorage.setItem('neode_did', res.did) } catch { /* noop */ } + } + }).catch(() => { /* use cached localStorage value */ }) loadPeers() loadReceivedMessages() loadIdentities()