From c95dd54a7ab45eaf697d9a716391c192d75eba8f Mon Sep 17 00:00:00 2001 From: SkateSpots Date: Mon, 12 Oct 2026 17:36:27 +0700 Subject: [PATCH] fix(coordinator): status badge shows labels (missing socialUi prefix) + 15min announce STATUS_META labels were 'coordinator.*' but keys live under 'socialUi.coordinator.*', so badges rendered raw keys (e.g. coordinator.statusStale). Prefixed all six. Also dropped relay announce_interval_secs from 86400 (24h) to 900 (15m) so the coordinator health probe reads Connected instead of stale. --- AGENTS.md | 7 +++++-- src/components/CoordinatorSettingsCard.tsx | 12 ++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index d23200e..429febc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2126,7 +2126,8 @@ The community relay moved off the hosted relay.tools instance - **Cordn coordinator (2026-10-12):** the relay also runs Newlay's **embedded Cordn coordinator** for crew MLS chat (`[cordn] enabled`, `mode = "embedded"`, `data_dir = /var/lib/newlay/data/cordn` inside the volume, `relay_url = - ws://127.0.0.1:7777`). Its identity is `cordn.key` (mounted read-only) — pubkey + ws://127.0.0.1:7777`, `announce_interval_secs = 900` (15 min so the health probe + reads **Connected**, not "stale" — the example's 86400s/24h default was too long). Its identity is `cordn.key` (mounted read-only) — pubkey `02816a05…` — ⚠️ the file must be owned by the container's `newlay` user (uid 10001, `chown 10001:10001`), else the relay crashes on `/etc/newlay/cordn.key: Permission denied`. BYO coordinator stays client-side. @@ -2138,7 +2139,9 @@ The community relay moved off the hosted relay.tools instance entry points in both branches — **"Cordn (web)"** (the cordn.net add-link → real MLS in the browser) and **"Copy for Staircase"** (copies the nprofile to add in the native app) — our coordinator by default, a BYO coordinator's when it has a - pubkey. + pubkey. Also fixed a status-badge bug: `STATUS_META` labels in + `CoordinatorSettingsCard` were missing the `socialUi.` prefix and rendered raw + keys (e.g. `coordinator.statusStale`). - **Cutover (2026-10-12):** `SKATE_RELAY` (`src/lib/types.ts`) → the new relay; the default pools, the DM/CVM/zap relay arrays, the `cvm-server` + `push-service` defaults, and the archive default all point at the new relay. diff --git a/src/components/CoordinatorSettingsCard.tsx b/src/components/CoordinatorSettingsCard.tsx index e2f1358..99f516c 100644 --- a/src/components/CoordinatorSettingsCard.tsx +++ b/src/components/CoordinatorSettingsCard.tsx @@ -42,12 +42,12 @@ const STATUS_META: Record< CoordinatorHealthStatus, { label: string; color: string; ring: string; dot: string } > = { - idle: { label: 'coordinator.statusIdle', color: 'text-gray-400', ring: 'border-white/10', dot: 'bg-gray-500' }, - checking: { label: 'coordinator.statusChecking', color: 'text-blue-300', ring: 'border-blue-500/30', dot: 'bg-blue-400' }, - online: { label: 'coordinator.statusOnline', color: 'text-green-400', ring: 'border-green-500/30', dot: 'bg-green-400' }, - stale: { label: 'coordinator.statusStale', color: 'text-amber-400', ring: 'border-amber-500/30', dot: 'bg-amber-400' }, - offline: { label: 'coordinator.statusOffline', color: 'text-red-400', ring: 'border-red-500/30', dot: 'bg-red-500' }, - error: { label: 'coordinator.statusError', color: 'text-red-400', ring: 'border-red-500/30', dot: 'bg-red-500' }, + idle: { label: 'socialUi.coordinator.statusIdle', color: 'text-gray-400', ring: 'border-white/10', dot: 'bg-gray-500' }, + checking: { label: 'socialUi.coordinator.statusChecking', color: 'text-blue-300', ring: 'border-blue-500/30', dot: 'bg-blue-400' }, + online: { label: 'socialUi.coordinator.statusOnline', color: 'text-green-400', ring: 'border-green-500/30', dot: 'bg-green-400' }, + stale: { label: 'socialUi.coordinator.statusStale', color: 'text-amber-400', ring: 'border-amber-500/30', dot: 'bg-amber-400' }, + offline: { label: 'socialUi.coordinator.statusOffline', color: 'text-red-400', ring: 'border-red-500/30', dot: 'bg-red-500' }, + error: { label: 'socialUi.coordinator.statusError', color: 'text-red-400', ring: 'border-red-500/30', dot: 'bg-red-500' }, }; async function copyText(text: string, copiedText: string, failedTitle: string, failedDesc: string) {