diff --git a/cmd/server/store.go b/cmd/server/store.go index 8707e711..5ad623c0 100644 --- a/cmd/server/store.go +++ b/cmd/server/store.go @@ -2946,6 +2946,7 @@ func (s *PacketStore) IngestNewFromDB(sinceID, limit int) ([]map[string]interfac "path_json": strOrNil(obs.PathJSON), "direction": strOrNil(obs.Direction), "observation_count": tx.ObservationCount, + "scope_name": strOrNil(tx.ScopeName), } // Use decode-window resolved path for broadcast (never from struct) if broadcastRP != nil { @@ -3218,6 +3219,7 @@ func (s *PacketStore) IngestNewObservations(sinceObsID, limit int) []map[string] "path_json": strOrNil(obs.PathJSON), "direction": strOrNil(obs.Direction), "observation_count": tx.ObservationCount, + "scope_name": strOrNil(tx.ScopeName), } // Use decode-window resolved path for broadcast if obsRPMap != nil { diff --git a/public/channels.js b/public/channels.js index 92b9586b..23205825 100644 --- a/public/channels.js +++ b/public/channels.js @@ -1419,6 +1419,7 @@ var pktId = m.data?.id || null; var snr = m.data?.snr ?? m.data?.packet?.snr ?? payload.SNR ?? null; var observer = m.data?.packet?.observer_name || m.data?.observer || null; + var scope = m.data?.scope_name || m.data?.packet?.scope_name || null; // Update channel list entry — only once per unique packet hash var isFirstObservation = pktHash && !seenHashes.has(pktHash + ':' + channelKey); @@ -1470,6 +1471,7 @@ observers: observer ? [observer] : [], hops: payload.path_len || 0, snr: snr, + scope: scope, // #1498: mark as WS-pushed so a later REST replacement // (selectChannel / refreshMessages) can merge instead of // stomp. Without this flag the REST response wipes any