From f5ffd5657cfe199f337d4ab6ea20eab1ad0593ab Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 13 Jul 2026 20:51:03 +0100 Subject: [PATCH] fix(network): accept-request/reject-request param mismatch broke connection requests Web5ConnectedNodes sent { request_id } but the backend only read params.id, so accepting/rejecting a connection request always failed with 'Missing required parameter: id'. Frontend now sends id; backend accepts both spellings for older deployed UIs. Co-Authored-By: Claude Fable 5 --- core/archipelago/src/api/rpc/network.rs | 4 ++++ neode-ui/src/views/web5/Web5ConnectedNodes.vue | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/archipelago/src/api/rpc/network.rs b/core/archipelago/src/api/rpc/network.rs index 9c2576f0..abf5ec95 100644 --- a/core/archipelago/src/api/rpc/network.rs +++ b/core/archipelago/src/api/rpc/network.rs @@ -168,8 +168,10 @@ impl RpcHandler { params: Option, ) -> Result { let params = params.unwrap_or_default(); + // The web UI historically sent `request_id`; accept both spellings. let request_id = params .get("id") + .or_else(|| params.get("request_id")) .and_then(|v| v.as_str()) .ok_or_else(|| anyhow::anyhow!("Missing required parameter: id"))?; @@ -243,8 +245,10 @@ impl RpcHandler { params: Option, ) -> Result { let params = params.unwrap_or_default(); + // The web UI historically sent `request_id`; accept both spellings. let request_id = params .get("id") + .or_else(|| params.get("request_id")) .and_then(|v| v.as_str()) .ok_or_else(|| anyhow::anyhow!("Missing required parameter: id"))?; diff --git a/neode-ui/src/views/web5/Web5ConnectedNodes.vue b/neode-ui/src/views/web5/Web5ConnectedNodes.vue index 303462b5..b376a3e0 100644 --- a/neode-ui/src/views/web5/Web5ConnectedNodes.vue +++ b/neode-ui/src/views/web5/Web5ConnectedNodes.vue @@ -501,7 +501,7 @@ async function loadConnectionRequests() { async function acceptRequest(requestId: string) { processingRequestId.value = requestId try { - await rpcClient.call({ method: 'network.accept-request', params: { request_id: requestId } }) + await rpcClient.call({ method: 'network.accept-request', params: { id: requestId } }) connectionRequests.value = connectionRequests.value.filter(r => r.id !== requestId) web5Badge.pendingRequestCount = connectionRequests.value.length writeConnectedNodesCache({ @@ -522,7 +522,7 @@ async function acceptRequest(requestId: string) { async function rejectRequest(requestId: string) { processingRequestId.value = requestId try { - await rpcClient.call({ method: 'network.reject-request', params: { request_id: requestId } }) + await rpcClient.call({ method: 'network.reject-request', params: { id: requestId } }) connectionRequests.value = connectionRequests.value.filter(r => r.id !== requestId) web5Badge.pendingRequestCount = connectionRequests.value.length writeConnectedNodesCache({