From 60b0e25751cef51560a0e9d85b5a04cd7683a747 Mon Sep 17 00:00:00 2001 From: DBT Date: Thu, 26 Feb 2026 03:12:49 +0000 Subject: [PATCH] nodes ui: keep local node always online and refresh ip/version on each query --- pkg/nodes/registry_server.go | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/pkg/nodes/registry_server.go b/pkg/nodes/registry_server.go index 23a1b63..8790b2b 100644 --- a/pkg/nodes/registry_server.go +++ b/pkg/nodes/registry_server.go @@ -469,16 +469,27 @@ func (s *RegistryServer) handleWebUINodes(w http.ResponseWriter, r *http.Request local.Endpoint = ip } 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)) + matched := false + for i := range list { + id := strings.ToLower(strings.TrimSpace(list[i].ID)) + name := strings.ToLower(strings.TrimSpace(list[i].Name)) if id == "local" || name == "local" || (hostLower != "" && name == hostLower) { - hasLocal = true + // Always keep local node green/alive with latest ip+version + list[i].ID = "local" + list[i].Online = true + list[i].Version = local.Version + if strings.TrimSpace(local.Endpoint) != "" { + list[i].Endpoint = local.Endpoint + } + if strings.TrimSpace(local.Name) != "" { + list[i].Name = local.Name + } + list[i].LastSeenAt = time.Now() + matched = true break } } - if !hasLocal { + if !matched { list = append([]NodeInfo{local}, list...) } _ = json.NewEncoder(w).Encode(map[string]interface{}{"ok": true, "nodes": list})