From f05759b57e683ed3371be2a62dd7b0fe5b7d3509 Mon Sep 17 00:00:00 2001 From: DBT Date: Thu, 26 Feb 2026 03:02:53 +0000 Subject: [PATCH] nodes api: dedupe synthetic local node to avoid duplicate display --- pkg/nodes/registry_server.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/nodes/registry_server.go b/pkg/nodes/registry_server.go index 4fd2146..5e8ebac 100644 --- a/pkg/nodes/registry_server.go +++ b/pkg/nodes/registry_server.go @@ -468,7 +468,19 @@ func (s *RegistryServer) handleWebUINodes(w http.ResponseWriter, r *http.Request if ip := detectLocalIP(); ip != "" { local.Endpoint = ip } - list = append([]NodeInfo{local}, list...) + hostLower := strings.ToLower(strings.TrimSpace(host)) + hasLocal := false + for _, n := range list { + id := strings.ToLower(strings.TrimSpace(n.ID)) + name := strings.ToLower(strings.TrimSpace(n.Name)) + if id == "local" || name == "local" || (hostLower != "" && name == hostLower) { + hasLocal = true + break + } + } + if !hasLocal { + list = append([]NodeInfo{local}, list...) + } _ = json.NewEncoder(w).Encode(map[string]interface{}{"ok": true, "nodes": list}) case http.MethodPost: var body struct {