From 819b89badb749ecc1ebe537b0392def305705a99 Mon Sep 17 00:00:00 2001 From: Filip Filmar Date: Sat, 28 Mar 2026 08:54:20 +0000 Subject: [PATCH] feat: implement Presentation Update P.1 - Updated the Messages panel to use short names instead of UUIDs. - Added a Peer Mapping table above the messages log with hyperlinked endpoints. - Ensured consistent styling using Bootstrap. This commit has been created by an automated coding assistant, with human supervision. Prompt: reread @ai/synod.spec.md and implement update P.1 --- internal/server/http_server.go | 76 +++++++++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 5 deletions(-) diff --git a/internal/server/http_server.go b/internal/server/http_server.go index 9021ce4..c76dce0 100644 --- a/internal/server/http_server.go +++ b/internal/server/http_server.go @@ -193,7 +193,7 @@ func (s *HTTPServer) handleIndex(w http.ResponseWriter, r *http.Request) { } func (s *HTTPServer) handleMessages(w http.ResponseWriter, r *http.Request) { - _, shortName, err := s.store.GetAgentID() + agentID, shortName, err := s.store.GetAgentID() if err != nil { http.Error(w, "Failed to get Agent ID", http.StatusInternalServerError) return @@ -204,6 +204,18 @@ func (s *HTTPServer) handleMessages(w http.ResponseWriter, r *http.Request) { return } + val, _, _, _, err := s.store.GetKVEntry("/_internal/peers") + if err != nil { + http.Error(w, "Failed to get peers from KV store", http.StatusInternalServerError) + return + } + members := make(map[string]state.PeerInfo) + if val != nil { + if err := json.Unmarshal(val, &members); err != nil { + glog.Errorf("Failed to unmarshal peers map: %v", err) + } + } + w.Header().Set("Content-Type", "text/html") fmt.Fprintf(w, ` @@ -232,6 +244,51 @@ func (s *HTTPServer) handleMessages(w http.ResponseWriter, r *http.Request) {
+
+
Peer Mapping
+
+
+ + + + + + + `, shortName, shortName) + + var ids []string + for id := range members { + ids = append(ids, id) + } + sort.Strings(ids) + + for _, id := range ids { + info := members[id] + label := info.ShortName + if id == agentID { + label = fmt.Sprintf("%s self", label) + } + + endpoints := fmt.Sprintf("%s", info.GRPCAddr) + if info.HTTPURL != "" { + endpoints += fmt.Sprintf(" | %s", info.HTTPURL, info.HTTPURL) + } + + fmt.Fprintf(w, ` + + + + + `, label, id, endpoints) + } + + fmt.Fprintf(w, ` + +
Short NameAgent IDEndpoints
%s%s%s
+
+
+
+
Recent Messages
@@ -242,19 +299,28 @@ func (s *HTTPServer) handleMessages(w http.ResponseWriter, r *http.Request) { IDTimeTypeSenderReceiverRequestReply - `, shortName, shortName) + `) for _, e := range entries { + senderName := e.Sender + if info, ok := members[e.Sender]; ok { + senderName = info.ShortName + } + receiverName := e.Receiver + if info, ok := members[e.Receiver]; ok { + receiverName = info.ShortName + } + fmt.Fprintf(w, ` %d %s %s - %s - %s + %s + %s
%s
%s
- `, e.ID, e.Timestamp, e.Type, e.Sender, e.Receiver, e.Message, e.Reply) + `, e.ID, e.Timestamp, e.Type, senderName, receiverName, e.Message, e.Reply) } fmt.Fprintf(w, `