fix(presence): always seed self entry and log counts

This commit is contained in:
Peter Steinberger
2025-12-09 03:21:59 +00:00
parent 2cd27d0d4a
commit 6b8011228e
2 changed files with 14 additions and 1 deletions

View File

@@ -172,7 +172,9 @@ export async function startControlChannel(
break;
}
case "system-presence": {
respond(listSystemPresence());
const pres = listSystemPresence();
logDebug?.(`control: system-presence count=${pres.length}`);
respond(pres);
break;
}
default:

View File

@@ -50,6 +50,15 @@ function initSelfPresence() {
entries.set(key, selfEntry);
}
function ensureSelfPresence() {
// If the map was somehow cleared (e.g., hot reload or a new worker spawn that
// skipped module evaluation), re-seed with a local entry so UIs always show
// at least the current relay.
if (entries.size === 0) {
initSelfPresence();
}
}
initSelfPresence();
function parsePresence(text: string): SystemPresence {
@@ -78,6 +87,7 @@ function parsePresence(text: string): SystemPresence {
}
export function updateSystemPresence(text: string) {
ensureSelfPresence();
const parsed = parsePresence(text);
const key =
parsed.host?.toLowerCase() || parsed.ip || parsed.text.slice(0, 64);
@@ -85,5 +95,6 @@ export function updateSystemPresence(text: string) {
}
export function listSystemPresence(): SystemPresence[] {
ensureSelfPresence();
return [...entries.values()].sort((a, b) => b.ts - a.ts);
}