From 1e5bc3b2993dbc2bca5afdbd6f685dee848e1c1c Mon Sep 17 00:00:00 2001 From: gadgethd <111318106+gadgethd@users.noreply.github.com> Date: Thu, 6 Aug 2026 11:25:07 +0000 Subject: [PATCH] feat(owner): clean up spring dashboard --- PLAN-spring-clean-2026-08-06.md | 129 +++++++++++ SPRING-DASHBOARD-2026-08-06.md | 59 +++++ SPRING-DASHBOARD-2026-08-06.png | Bin 0 -> 185341 bytes backend/src/api/routes/owner.ts | 4 +- backend/src/owner/ownerAccess.ts | 91 ++------ backend/src/owner/ownerDashboard.test.ts | 73 ++++++ backend/src/owner/ownerDashboard.ts | 110 +++++++++ backend/src/owner/ownerRepository.ts | 4 +- backend/src/owner/ownerService.ts | 10 +- .../components/owner/OwnerPortalSections.tsx | 209 +----------------- frontend/src/pages/OwnerPortalPage.tsx | 44 ++-- frontend/src/pages/owner-portal.css | 133 +++++------ .../src/pages/owner/ownerPortalModel.test.ts | 28 ++- frontend/src/pages/owner/ownerPortalModel.ts | 16 +- frontend/test/e2e/owner.spec.ts | 15 +- 15 files changed, 526 insertions(+), 399 deletions(-) create mode 100644 PLAN-spring-clean-2026-08-06.md create mode 100644 SPRING-DASHBOARD-2026-08-06.md create mode 100644 SPRING-DASHBOARD-2026-08-06.png create mode 100644 backend/src/owner/ownerDashboard.test.ts create mode 100644 backend/src/owner/ownerDashboard.ts diff --git a/PLAN-spring-clean-2026-08-06.md b/PLAN-spring-clean-2026-08-06.md new file mode 100644 index 0000000..6129dcd --- /dev/null +++ b/PLAN-spring-clean-2026-08-06.md @@ -0,0 +1,129 @@ +# UKMesh Spring Clean 2026-08-06 + +Plan-first, then execute **one item at a time** (Ben's rule). All code work via +**MissionDeck agents on gpt-5.6-luna @ max** on the VPS canonical tree +(`~/ukmesh/meshcore-analytics` on 57.129.131.35, branch `main`). No GitHub +push (not set up on the new VPS yet) — agents commit locally + deploy live per +the meshcore-analytics-ops skill (image pins, digest updates, scoped rollout, +screenshot verification). + +Pre-work: merge `feat/meshcore-decryption` into `main` on the VPS so agents +start from the live state. + +## Recon findings (2026-08-06) +- **GNOME**: `GNOME-MSG-RPT` exists as 3 node rows (keys D7696E…10…A4, D7696E…16…A4 — + one nibble differs, likely re-keyed device, and 230F10… with 0 adverts); + `GNOME-STKTN-RPT` ×2; `GNOME-MOBILE-RPT` stale since 2026-07-01. Data is split + across duplicate rows → map/dashboard shows stale or partial data. +- **Ingest dip**: packets/day 154.8K (Aug 3) → 121.5K (Aug 4) → 100.2K (Aug 5) + → ~6.2K by 01:30 Aug 6. Migration cutover was Aug 5 22:46Z. Other services + (discord-bot etc.) report higher counts for the same repeaters. +- **Feed**: `getRecentMessages` = type-5 packets, **24h window**, LIMIT 50 → + quiet channels (bot) show a handful. Need per-channel history up to 50. +- **Owner dashboard dupes**: same repeater name, different public keys + (2E0MTU RPT Hilperton ×2, 7UKR S62 RPT ×2, GNOME-MSG-RPT ×3…). +- **Live map feed card**: wide metadata (IATA, hops, GRP tag); message text + should be primary, text smaller. +- **Path algorithm**: makes hops that conflict with the ITM/line-of-sight data. +- **Repeaters**: stale ones remain on map (should drop unless seen in + multibyte-hop paths); MQTT-only repeaters render specially (should not). + +## Overnight progress log (2026-08-06, Ben asleep — autonomous run) +- **[DONE] Item 1 — MQTT ingest**: root cause = failed DB batch writes discarded without retry (lossy during DB instability) + clean-session MQTT client (missed messages on reconnect). Observer feeds declined Aug 4 pre-cutover (not ours). Fix: idempotent transient batch retries, persistent clean=false QoS-1 session, outcome/retry metrics. Commit 90d0dce, digest 7e085b1286d5 pinned, verified (health healthy, HopReach 200, 1,457 pkts/30min). Report: INGEST-AUDIT-2026-08-06.md. +- **[DONE] Item 2 — GNOME repeater**: general evidence-based canonical node-identity merge (migration 036 + nodeIdentity.ts + canonical views wired into all read paths). GNOME MSG 3 keys → D769…F344A4, STKTN 3 → 6582…A104F8; stale GNOME-MOBILE separate; false-merge families (Dunston-1/2/3, NorthMesh RPT-1/2, Reach Yagi E/NWW) correctly NOT merged (active-to-active never merges, ordinal/directional suffixes = hard ambiguity). Commit df7cfbe, digest 03e54021. Report: GNOME-REPEATER-2026-08-06.md. + - **Perf regression found+fixed by me (Hermes)**: canonical views called meshcore_canonical_node_id per row (5×/row on links) = 38s scans → synthetic WS health check critical. Fix: set-based alias LEFT JOINs (38s→1.5s) + MATERIALIZED CTE wrapper (planner was re-running the links aggregation 13,070× per consumer query; viable-links 24.3s→3.1s) + dropped dead terrain_profile_json column (zero readers). Migration 037 (applied, idempotent), commit 977ce17. Verified: health healthy, HopReach 200, WS initial_state 507ms, GNOME API rows canonical. +- **IN PROGRESS — Item 3 (feed history to 50)**: root cause = getRecentMessages is 24h-window LIMIT 50 → quiet channels (bot) show few messages. Agent: ukmesh-feed-history (to spawn). +- Gateway restart 03:40 local (02:40Z) also restarted MissionDeck + VPS app-server; MCP bridge fixed by killing mcp.js children; no service restarts performed by me. +## Execution order (one at a time) +1. **MQTT ingest audit + fix** (backend) — compare mosquitto/subscription counts + vs packets table per observer; find the Aug 4–5 drop (QoS, topic filter, + dedupe, concurrency); fix root cause; verify per-observer parity. +2. **GNOME repeater data** (backend) — why not showing properly: node-row + dedupe (same-name/similar-key merge), stale GNOME rows, advert handling. +3. **Feed history to 50** (backend + frontend) — per-channel message fetch + (extend window / dedicated endpoint), sidebar channels show up to 50. +4. **Owner dashboard repeater dedupe** (frontend/backend) — same-name repeaters + shown once (merge by canonical identity; keep key list). +5. **Live map feed card** — message-first compact layout, smaller metadata. +6. **Path algorithm honesty** — respect ITM/LOS hop feasibility; no wild hops. +7. **Stale repeaters off the map** — unless seen in multibyte packet hops. +8. **MQTT repeaters not shown specially** — render like any other repeater + (or not at all per product decision — default: normal repeater). +9. **Repeater UI polish** (website) — match site fonts/design language. +10. **Repeater observation register page** — verify it works; remove if dead. +11. **Topology map on UK map** — render repeater topology over the UK map. +12. **Spam page** — verify whether it works / is needed; fix or remove. +13. **Install page full fact-check audit** — **MissionDeck agent (luna max)**, + read-only audit of every claim vs reality; produce corrections list; apply. +14. **Health page removal** — delete page + nav entry. +15. **Docs expansion + fact-check** — expand from MeshCore knowledge; agent + fact-check; keep page. +16. **Health check redesign** — packet-send-and-track feature + site-consistent + styling. +17. **Owner dashboard single page** — collapse multi-section pages back to one. +18. **MQTT owners page cleanup** — remove settings section + dead/unwired + features (projected features get removed, not kept). + +## Rules +- One item at a time: investigate → agent fix (luna max) → quality gates → + deploy live → verify (API + screenshot) → report → next. +- Agents: `provider: codex@ukmesh`, `model: gpt-5.6-luna`, `effort: max`, + `yolo: true`, cwd `/home/ben/ukmesh/meshcore-analytics`, main branch, NO + GitHub push, commit locally, deploy per ops skill (image digests, scoped + rollout, screenshot proof). +- Backend changes → re-verify hopreach contract + /api/health after deploy. +- Record progress in this file after each item. + +## Morning verification + continuation (2026-08-06 ~09:15Z) +- Items 1-3 re-verified live by Hermes: ingest 4-4.6k pkts/hr steady, GNOME rows canonical (3 rows), feed history 50 spanning Jul 27-Aug 5. ALL HEALTHY. +- Item 6 (path LOS/ITM): COVERED by pathing prod integration — champion vit_src includes ITM/corridor interpolation (REPORT-pathing-experiment.md), live commits 5dd15d9 (physics gates) + a76ab1e (terrain-aware paths). Marked done pending visual confirm in Wave 2. +- Remaining 15 items executing in waves (one website/app image owner at a time): + - Wave 1 [RUNNING]: items 4+17+18 (owner dashboard dedupe/one-page/cleanup) — agent ukmesh-spring-dashboard + - Wave 2: items 5+7+8+9 (feed card, stale repeaters, MQTT repeaters, polish) + visual check item 6 + - Wave 3: items 10+12+14 (observation register, spam page, health page removal) + - Wave 4: item 11 (topology map on UK map) +- Wave 5: item 16 (health check redesign — separate meshcore-health-check app) + item 13 (install page audit) + item 15 (docs) + +## Spring dashboard completion (2026-08-06) + +- **[DONE] Item 4 — owner repeater dedupe.** The owner dashboard now reads the + canonical `node_identity_nodes` view and carries `canonicalId` plus the + complete `members` key list into the owner session/live payload. The owner + boundary also combines separately-authorized canonical rows with the same + normalized repeater name, retaining an authorized source key for existing + live endpoint access. The deployed live grouping produced one + `GNOME-MSG-RPT` entry with 3 member keys and one `2E0MTU RPT Hilperton` entry + with 2 member keys. +- **[DONE] Item 17 — single owner page.** Removed the dashboard/live/settings + section navigation; identity, summary, telemetry, map, alerts, trends, + link health, sender, heard-by, and packet sections are all reachable on one + stacked owner page. +- **[DONE] Item 18 — MQTT owners cleanup.** Removed the settings UI and its + inactive controls, plus the unused roadmap/totals payload and related CSS. + The backend alert API/worker remains because it is an active operational + delivery path, not a projected page feature. +- **Implementation:** added canonical grouping tests and updated owner + response/e2e coverage. Local implementation commit is recorded in the final + handoff after verification. +- **Quality gates:** backend `npx tsc --noEmit`; backend `npm test` = 273/273 + passing (271 existing tests plus 2 grouping tests); frontend + `npx tsc --noEmit`, `npm test` = 76/76, `npm run lint:css`, and `npm run + build` all pass. Build emitted only the existing large-chunk warnings. +- **Deployment:** built and deployed backend, app, and website with the + spring-dash tags. Deployed image IDs were backend + `sha256:6a11941684f87f029bbcf98b50ec2764f92ede5ea6f5f8d9c029ba7a0cac1164`, + app `sha256:30b286f26b8fdf1b8a04a41585475822bd80658a9057c627c4df626370fc12b2`, + and website + `sha256:96ab70c6b4f168d6dc11c036bc7119a578b6b22d89ae8e505544d68cfbe87b92`. + Per deployment instruction, only `APP_IMAGE` and `WEBSITE_IMAGE` were + changed in the ignored `.env`; the backend tag was supplied explicitly for + this rollout. +- **Live verification:** `/api/health` returned `healthy`, + `/hopreach/api/nodes` returned HTTP 200, and backend/app/website containers + are healthy. The Googlebot Playwright smoke used the real owner route + `https://ukmesh.com/login` (the deployed architecture serves `/login` on + the website host; `app.ukmesh.com` is the map-only build), with a read-only + live grouping payload because no owner MQTT credential is present on the + host. Browser assertions found 2 identity cards, exactly 1 GNOME card, 1 + 2E0MTU card, 3 and 2 member keys respectively, zero section tabs, and zero + settings UI. Screenshot: `SPRING-DASHBOARD-2026-08-06.png`. diff --git a/SPRING-DASHBOARD-2026-08-06.md b/SPRING-DASHBOARD-2026-08-06.md new file mode 100644 index 0000000..b82c631 --- /dev/null +++ b/SPRING-DASHBOARD-2026-08-06.md @@ -0,0 +1,59 @@ +# UKMesh spring dashboard — 2026-08-06 + +Items 4, 17, and 18 are implemented and deployed locally on `main`. + +## What changed + +- Owner dashboard identity data now comes from the canonical + `node_identity_nodes` view and exposes `canonicalId` and all merged/source + `members`. The owner display groups same-name authorized identities as one + entry while retaining an authorized source key for existing live queries. + Member keys and the canonical ID are visible on each entry. +- The owner dashboard no longer has Dashboard/Live/Settings navigation. All + existing identity, telemetry, map, alert, trend, link, sender, heard-by, + and packet sections are stacked on one page. +- The settings UI, its inactive controls, roadmap/"coming soon" payload, and + related dead CSS were removed. The backend alert API and worker remain as an + active operational delivery path. + +## Verification + +Live owner grouping from the deployed backend produced exactly two relevant +entries: one `GNOME-MSG-RPT` entry with 3 member keys and one `2E0MTU RPT +Hilperton` entry with 2 member keys. The screenshot +[SPRING-DASHBOARD-2026-08-06.png](./SPRING-DASHBOARD-2026-08-06.png) records the +browser smoke result. + +The Googlebot Playwright smoke loaded the real public owner route +`https://ukmesh.com/login`. This is the owner route in the deployed build; +`https://app.ukmesh.com` is the map-only app build. Because no owner MQTT +credential is available on this host, the smoke used the read-only live +grouping payload from production and intercepted only the authenticated session +and live requests; the deployed public JS/CSS and route were loaded from the +real site. Assertions found 2 identity cards, 1 GNOME card, 1 2E0MTU card, +member counts 3/2, zero section tabs, and zero settings UI. + +Quality gates: + +- Backend `npx tsc --noEmit`: pass. +- Backend `npm test`: 273/273 pass (271 existing tests plus 2 grouping tests; + no pre-existing failures). +- Frontend `npx tsc --noEmit`: pass. +- Frontend `npm test`: 76/76 pass. +- Frontend `npm run lint:css`: pass. +- Frontend `npm run build`: pass; only existing large-chunk warnings. +- `GET http://127.0.0.1:3000/api/health`: `healthy`. +- `GET http://127.0.0.1:3000/hopreach/api/nodes`: HTTP `200`. + +## Deployment + +Deployed services use the spring-dash image tags and are healthy: + +- Backend: `sha256:6a11941684f87f029bbcf98b50ec2764f92ede5ea6f5f8d9c029ba7a0cac1164` +- App: `sha256:30b286f26b8fdf1b8a04a41585475822bd80658a9057c627c4df626370fc12b2` +- Website: `sha256:96ab70c6b4f168d6dc11c036bc7119a578b6b22d89ae8e505544d68cfbe87b92` + +Only `APP_IMAGE` and `WEBSITE_IMAGE` were updated in the ignored `.env`, as +required. The backend image was supplied explicitly for this rollout without +altering other `.env` lines. The implementation commit hash is added to this +record immediately after the local code commit. diff --git a/SPRING-DASHBOARD-2026-08-06.png b/SPRING-DASHBOARD-2026-08-06.png new file mode 100644 index 0000000000000000000000000000000000000000..e70044391e2d6b26b2a73261234c0416c016ea7b GIT binary patch literal 185341 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

$v*E&6zMv=~(g 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�RKE~KDqVK1|(f#(T!{F1& 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

>mHu6z;nb;D5EoU@An literal 0 HcmV?d00001 diff --git a/backend/src/api/routes/owner.ts b/backend/src/api/routes/owner.ts index 342883d..5ed5b52 100644 --- a/backend/src/api/routes/owner.ts +++ b/backend/src/api/routes/owner.ts @@ -17,9 +17,7 @@ import { } from '../../repositories/ownerAlerts.js'; type OwnerDashboard = { - totals: { - ownedNodes: number; - }; + nodes: unknown[]; }; type OwnerLiveCacheEntry = { diff --git a/backend/src/owner/ownerAccess.ts b/backend/src/owner/ownerAccess.ts index d6aa86a..f37a78a 100644 --- a/backend/src/owner/ownerAccess.ts +++ b/backend/src/owner/ownerAccess.ts @@ -5,6 +5,7 @@ import { getOwnerNodeIdsForUsername } from '../db/ownerAuth.js'; import { query } from '../db/index.js'; import { getNodeIdsForUserInAcl, readAclFile } from '../mqtt/aclManager.js'; import { reconcileOwnerAuthorization } from './ownerAclReconciler.js'; +import { groupOwnerNodes, type OwnerDashboardRow } from './ownerDashboard.js'; import { parseOwnerGrantConfig } from './ownerGrantConfig.js'; function normalizeNodeIds(nodeIds: string[]): string[] { @@ -155,75 +156,25 @@ function verifyMqttCredentialsViaBroker(mqttUsername: string, mqttPassword: stri } export async function buildOwnerDashboard(nodeIds: string[]) { - if (nodeIds.length < 1) { - return { - nodes: [], - totals: { - ownedNodes: 0, - packets24h: 0, - packets7d: 0, - packetsReceived24h: 0, - }, - roadmap: [ - 'Per-node packet history for owner nodes', - 'Advert and heartbeat trend views', - 'RSSI and SNR trend views from observer reports', - 'Node placement planner (coming next)', - ], - }; - } + const ownedNodes = await query( + `SELECT n.node_id AS canonical_id, + n.name, + n.network, + n.last_seen::text, + n.advert_count, + n.lat, + n.lon, + n.iata, + n.role, + n.identity_source_ids AS members + FROM node_identity_nodes n + WHERE n.node_id IN ( + SELECT meshcore_canonical_node_id(source_node_id) + FROM unnest($1::text[]) AS source(source_node_id) + ) + ORDER BY n.last_seen DESC NULLS LAST`, + [nodeIds], + ); - const [ownedNodes, packetSummary, rxSummary] = await Promise.all([ - query<{ - node_id: string; - name: string | null; - network: string; - last_seen: string | null; - advert_count: number | null; - lat: number | null; - lon: number | null; - iata: string | null; - }>( - `SELECT node_id, name, network, last_seen, advert_count, lat, lon, iata - FROM nodes - WHERE node_id = ANY($1::text[]) - ORDER BY last_seen DESC NULLS LAST`, - [nodeIds], - ), - query<{ packets_24h: number; packets_7d: number }>( - `SELECT - COUNT(*) FILTER (WHERE time > NOW() - INTERVAL '24 hours')::int AS packets_24h, - COUNT(*) FILTER (WHERE time > NOW() - INTERVAL '7 days')::int AS packets_7d - FROM packets - WHERE src_node_id = ANY($1::text[])`, - [nodeIds], - ), - query<{ packets_24h: number }>( - `SELECT - COUNT(*) FILTER (WHERE time > NOW() - INTERVAL '24 hours')::int AS packets_24h - FROM packets - WHERE rx_node_id = ANY($1::text[])`, - [nodeIds], - ), - ]); - - return { - nodes: ownedNodes.rows.map((row) => ({ - ...row, - last_seen: row.last_seen ? new Date(row.last_seen).toISOString() : null, - advert_count: Number(row.advert_count ?? 0), - })), - totals: { - ownedNodes: ownedNodes.rows.length, - packets24h: Number(packetSummary.rows[0]?.packets_24h ?? 0), - packets7d: Number(packetSummary.rows[0]?.packets_7d ?? 0), - packetsReceived24h: Number(rxSummary.rows[0]?.packets_24h ?? 0), - }, - roadmap: [ - 'Per-node packet history for owner nodes', - 'Advert and heartbeat trend views', - 'RSSI and SNR trend views from observer reports', - 'Node placement planner (coming next)', - ], - }; + return { nodes: groupOwnerNodes(ownedNodes.rows, nodeIds) }; } diff --git a/backend/src/owner/ownerDashboard.test.ts b/backend/src/owner/ownerDashboard.test.ts new file mode 100644 index 0000000..68015b8 --- /dev/null +++ b/backend/src/owner/ownerDashboard.test.ts @@ -0,0 +1,73 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { groupOwnerNodes, type OwnerDashboardRow } from './ownerDashboard.js'; + +const row = (overrides: Partial): OwnerDashboardRow => ({ + canonical_id: 'A1'.repeat(32), + name: null, + network: 'ukmesh', + last_seen: null, + advert_count: 0, + lat: null, + lon: null, + iata: null, + role: 2, + members: [], + ...overrides, +}); + +test('owner dashboard groups same-name identities and preserves every member key', () => { + const olderKey = 'B2'.repeat(32); + const newerKey = 'C3'.repeat(32); + const gnomeCanonical = 'D4'.repeat(32); + const gnomeRotation = 'E5'.repeat(32); + + const nodes = groupOwnerNodes([ + row({ + canonical_id: olderKey, + name: '2E0MTU RPT Hilperton', + members: [olderKey], + last_seen: '2026-07-25T12:00:00Z', + advert_count: 6, + }), + row({ + canonical_id: newerKey, + name: ' 2E0MTU RPT Hilperton ', + members: [newerKey], + last_seen: '2026-07-31T12:00:00Z', + advert_count: 3, + }), + row({ + canonical_id: gnomeCanonical, + name: 'GNOME-MSG-RPT', + members: [gnomeCanonical, gnomeRotation], + last_seen: '2026-08-06T12:00:00Z', + advert_count: 10, + }), + ], [olderKey, gnomeRotation]); + + assert.equal(nodes.length, 2); + const hilperton = nodes.find((node) => node.name === ' 2E0MTU RPT Hilperton ' || node.name === '2E0MTU RPT Hilperton'); + assert.ok(hilperton); + assert.equal(hilperton.node_id, olderKey); + assert.equal(hilperton.canonicalId, newerKey); + assert.deepEqual(hilperton.members, [olderKey, newerKey].sort()); + assert.equal(hilperton.advert_count, 9); + + const gnome = nodes.find((node) => node.name === 'GNOME-MSG-RPT'); + assert.ok(gnome); + assert.equal(gnome.node_id, gnomeRotation); + assert.deepEqual(gnome.members, [gnomeCanonical, gnomeRotation].sort()); +}); + +test('owner dashboard keeps unnamed canonical identities separate', () => { + const first = 'F6'.repeat(32); + const second = '07'.repeat(32); + const nodes = groupOwnerNodes([ + row({ canonical_id: first, members: [first] }), + row({ canonical_id: second, members: [second] }), + ], [first, second]); + + assert.deepEqual(nodes.map((node) => node.canonicalId).sort(), [first, second].sort()); + assert.deepEqual(nodes.map((node) => node.members), [[first], [second]].sort()); +}); diff --git a/backend/src/owner/ownerDashboard.ts b/backend/src/owner/ownerDashboard.ts new file mode 100644 index 0000000..0706ad3 --- /dev/null +++ b/backend/src/owner/ownerDashboard.ts @@ -0,0 +1,110 @@ +export type OwnerDashboardRow = { + canonical_id: string; + name: string | null; + network: string; + last_seen: string | null; + advert_count: number | null; + lat: number | null; + lon: number | null; + iata: string | null; + role: number | null; + members: string[]; +}; + +export type OwnerDashboardNode = { + // Keep an authorized source key here so existing owner live endpoints can + // continue to authorize the selected entry without broadening access. + node_id: string; + canonicalId: string; + members: string[]; + name: string | null; + network: string; + last_seen: string | null; + advert_count: number; + lat: number | null; + lon: number | null; + iata: string | null; + role: number | null; +}; + +function normalizedKey(value: string): string { + return value.trim().toUpperCase(); +} + +function normalizedName(value: string | null): string | null { + const normalized = value?.trim().replace(/\s+/g, ' ').toUpperCase() ?? ''; + return normalized || null; +} + +function timestampMs(value: string | null): number { + if (!value) return Number.NEGATIVE_INFINITY; + const parsed = Date.parse(value); + return Number.isFinite(parsed) ? parsed : Number.NEGATIVE_INFINITY; +} + +function compareRows(left: OwnerDashboardRow, right: OwnerDashboardRow): number { + return timestampMs(right.last_seen) - timestampMs(left.last_seen) + || Number(right.advert_count ?? 0) - Number(left.advert_count ?? 0) + || normalizedKey(left.canonical_id).localeCompare(normalizedKey(right.canonical_id)); +} + +/** + * Converts canonical identity rows into the owner-facing display list. + * + * The canonical view normally provides one row per identity. Exact same-name + * rows are also combined here because owner authorization can retain older + * keys that the evidence-based global merge intentionally leaves separate. + * Their keys stay visible in `members`, while the freshest row supplies the + * display position and metadata. + */ +export function groupOwnerNodes( + rows: OwnerDashboardRow[], + authorizedNodeIds: string[], +): OwnerDashboardNode[] { + const authorized = authorizedNodeIds.map(normalizedKey); + const groups = new Map(); + + for (const row of rows) { + const canonicalId = normalizedKey(row.canonical_id); + const displayName = normalizedName(row.name); + const groupKey = displayName ? `name:${displayName}` : `canonical:${canonicalId}`; + const group = groups.get(groupKey) ?? []; + group.push({ + ...row, + canonical_id: canonicalId, + members: Array.from(new Set([ + canonicalId, + ...(Array.isArray(row.members) ? row.members : []).map(normalizedKey), + ])).filter(Boolean), + }); + groups.set(groupKey, group); + } + + const result = Array.from(groups.values()).map((group) => { + const ordered = [...group].sort(compareRows); + const representative = ordered[0]!; + const members = Array.from(new Set(group.flatMap((row) => row.members))).sort(); + const accessNodeId = authorized.find((nodeId) => members.includes(nodeId)) + ?? representative.canonical_id; + + return { + node_id: accessNodeId, + canonicalId: representative.canonical_id, + members, + name: representative.name, + network: representative.network, + last_seen: representative.last_seen, + advert_count: group.reduce((sum, row) => sum + Number(row.advert_count ?? 0), 0), + lat: representative.lat, + lon: representative.lon, + iata: representative.iata, + role: representative.role, + } satisfies OwnerDashboardNode; + }); + + return result.sort((left, right) => ( + timestampMs(right.last_seen) - timestampMs(left.last_seen) + || (left.name ?? '').localeCompare(right.name ?? '') + || left.canonicalId.localeCompare(right.canonicalId) + )); +} diff --git a/backend/src/owner/ownerRepository.ts b/backend/src/owner/ownerRepository.ts index 3f9f3a6..07a7d29 100644 --- a/backend/src/owner/ownerRepository.ts +++ b/backend/src/owner/ownerRepository.ts @@ -229,8 +229,10 @@ export function createOwnerRepository(deps: OwnerRepositoryDeps) { lat: number | null; lon: number | null; role: number | null; + members: string[]; }>( - `SELECT node_id, name, network, iata, advert_count, last_seen, lat, lon, role + `SELECT node_id, name, network, iata, advert_count, last_seen, lat, lon, role, + identity_source_ids AS members FROM node_identity_nodes WHERE node_id = meshcore_canonical_node_id($1) LIMIT 1`, diff --git a/backend/src/owner/ownerService.ts b/backend/src/owner/ownerService.ts index 2397b61..8238717 100644 --- a/backend/src/owner/ownerService.ts +++ b/backend/src/owner/ownerService.ts @@ -3,9 +3,7 @@ import type { OwnerSession } from './ownerSession.js'; import { BoundedTtlMap } from '../cache/boundedTtlMap.js'; type OwnerDashboard = { - totals: { - ownedNodes: number; - }; + nodes: unknown[]; } & Record; type OwnerLiveCacheEntry = { @@ -154,7 +152,7 @@ export function createOwnerService(deps: OwnerServiceDeps) { const mappedNodeIds = await autoLinkOwnerNodeIds(mqttUsername); const dashboard = await buildOwnerDashboard(mappedNodeIds); - if (dashboard.totals.ownedNodes < 1) { + if (dashboard.nodes.length < 1) { throw new Error('NO_ACTIVE_OWNER_NODE'); } @@ -183,7 +181,7 @@ export function createOwnerService(deps: OwnerServiceDeps) { } const dashboard = await buildOwnerDashboard(freshNodeIds); - if (dashboard.totals.ownedNodes < 1) { + if (dashboard.nodes.length < 1) { throw new Error('NO_ACTIVE_OWNER_NODE'); } ownerDashboardCache.set(cacheKey, { ts: Date.now(), dashboard, nodeIds: freshNodeIds }); @@ -412,6 +410,8 @@ export function createOwnerService(deps: OwnerServiceDeps) { nodeId: selectedNodeId, ownerNode: { ...ownerNode, + canonicalId: ownerNode.node_id, + members: ownerNode.members, advert_count: Number(ownerNode.advert_count ?? 0), last_seen: ownerNode.last_seen ? new Date(ownerNode.last_seen).toISOString() : null, }, diff --git a/frontend/src/components/owner/OwnerPortalSections.tsx b/frontend/src/components/owner/OwnerPortalSections.tsx index 9e2d04b..809827c 100644 --- a/frontend/src/components/owner/OwnerPortalSections.tsx +++ b/frontend/src/components/owner/OwnerPortalSections.tsx @@ -1,4 +1,4 @@ -import { FormEvent, ReactNode, useEffect, useState } from 'react'; +import { type FormEvent } from 'react'; import { LoadingIndicator } from '../LoadingIndicator.js'; export function OwnerLoginSection(props: { @@ -27,210 +27,3 @@ export function OwnerLoginSection(props: { ); } - -export function OwnerSection({ children }: { children: ReactNode }) { - return <>{children}; -} - -type Rule = { - id: string; - node_id: string; - rule_type: string; - threshold: number; - enabled: boolean; - pause_reason: string | null; - last_delivery_success_at: string | null; - last_delivery_error_at: string | null; - last_delivery_error: string | null; - destination: { configured: boolean; host: string | null }; -}; -type DeliveryAttempt = { - attempt: number; - outcome: string; - httpStatus: number | null; - error: string | null; - startedAt: string; - completedAt: string; -}; -type Delivery = { - id: string; - rule_id: string; - node_id: string; - rule_type: string; - destination_host: string; - status: string; - attempts: number; - is_test: boolean; - next_attempt_at: string; - delivered_at: string | null; - last_error: string | null; - created_at: string; - attempt_history: DeliveryAttempt[]; -}; -async function ownerCsrf(): Promise { - const response = await fetch('/api/owner/csrf', { cache: 'no-store' }); - const value = await response.json() as { csrfToken?: string }; - if (!response.ok || !value.csrfToken) throw new Error('Could not prepare secure request'); - return value.csrfToken; -} - -export function OwnerAlertSettings({ nodes, selectedNodeId }: { nodes: Array<{ node_id: string; name?: string | null }>; selectedNodeId: string }) { - const [rules, setRules] = useState([]); - const [deliveries, setDeliveries] = useState([]); - const [ruleType, setRuleType] = useState('offline_minutes'); - const [threshold, setThreshold] = useState('30'); - const [webhook, setWebhook] = useState(''); - const [message, setMessage] = useState(null); - const [busyRuleId, setBusyRuleId] = useState(null); - const load = async () => { - const [ruleResponse, deliveryResponse] = await Promise.all([ - fetch('/api/owner/alert-rules', { cache: 'no-store' }), - fetch('/api/owner/alert-deliveries', { cache: 'no-store' }), - ]); - if (!ruleResponse.ok || !deliveryResponse.ok) throw new Error('Could not load alert delivery state'); - const nextRules = await ruleResponse.json() as Rule[]; - const history = await deliveryResponse.json() as { deliveries?: Delivery[] }; - setRules(Array.isArray(nextRules) ? nextRules : []); - setDeliveries(Array.isArray(history.deliveries) ? history.deliveries : []); - }; - useEffect(() => { - void load().catch((error: Error) => setMessage(error.message)); - const timer = window.setInterval(() => { - if (document.visibilityState === 'visible') void load().catch(() => {}); - }, 15_000); - return () => window.clearInterval(timer); - }, []); - const submit = (event: FormEvent) => { - event.preventDefault(); - ownerCsrf().then((csrfToken) => fetch('/api/owner/alert-rules', { - method: 'POST', - headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrfToken }, - body: JSON.stringify({ nodeId: selectedNodeId, ruleType, threshold: Number(threshold), webhook, enabled: true }), - })).then(async (response) => { - const value = await response.json().catch(() => ({})) as { error?: string }; - if (!response.ok) throw new Error(value.error ?? `HTTP ${response.status}`); - setMessage('Alert rule saved.'); - void load(); - }).catch((error: Error) => setMessage(error.message)); - }; - const sendTest = async (ruleId: string) => { - setBusyRuleId(ruleId); - setMessage(null); - try { - const csrfToken = await ownerCsrf(); - const response = await fetch(`/api/owner/alert-rules/${ruleId}/test`, { - method: 'POST', - headers: { - 'X-CSRF-Token': csrfToken, - 'Idempotency-Key': crypto.randomUUID(), - }, - }); - const value = await response.json().catch(() => ({})) as { error?: string; status?: string }; - if (!response.ok) throw new Error(value.error ?? `HTTP ${response.status}`); - setMessage(value.status === 'already_queued' - ? 'That test request was already queued.' - : 'Test delivery queued. Its result will appear below.'); - await load(); - } catch (error) { - setMessage((error as Error).message); - } finally { - setBusyRuleId(null); - } - }; - const removeRule = async (ruleId: string) => { - setBusyRuleId(ruleId); - setMessage(null); - try { - const csrfToken = await ownerCsrf(); - const response = await fetch(`/api/owner/alert-rules/${ruleId}`, { - method: 'DELETE', - headers: { 'X-CSRF-Token': csrfToken }, - }); - if (!response.ok) throw new Error(`Could not remove rule (HTTP ${response.status})`); - setMessage('Alert rule removed.'); - await load(); - } catch (error) { - setMessage((error as Error).message); - } finally { - setBusyRuleId(null); - } - }; - return ( -

-

Alert settings

-

Create per-node health rules. Delivery is idempotent, retried up to five times, and paused after a terminal failure.

-
- - - - - -
- {message &&

{message}

} -
- {rules.map((rule) => ( -
-
- {rule.rule_type.replace(/_/g, ' ')} · {rule.threshold} - - {rule.destination.configured ? `Webhook: ${rule.destination.host}` : 'No delivery channel'} - {rule.pause_reason ? ` · Paused: ${rule.pause_reason.replace(/_/g, ' ')}` : ''} - - - {rule.last_delivery_success_at - ? `Last success ${new Date(rule.last_delivery_success_at).toLocaleString()}` - : rule.last_delivery_error_at - ? `Last error ${new Date(rule.last_delivery_error_at).toLocaleString()}` - : 'No delivery attempts yet'} - -
-
- - -
-
- ))} -
-
-

Delivery history

- {deliveries.length === 0 ?

No alert deliveries yet.

: deliveries.map((delivery) => ( -
- - {delivery.is_test ? 'Test' : delivery.rule_type.replace(/_/g, ' ')} - {delivery.destination_host} - {delivery.status.replace(/_/g, ' ')} - -

- Node {delivery.node_id.slice(0, 12)}… · {delivery.attempts} attempt{delivery.attempts === 1 ? '' : 's'} · - {' '}{new Date(delivery.created_at).toLocaleString()} -

- {delivery.last_error &&

{delivery.last_error}

} - {delivery.attempt_history.length > 0 && ( -
    - {delivery.attempt_history.map((attempt) => ( -
  1. - Attempt {attempt.attempt}: {attempt.outcome} - {attempt.httpStatus ? ` (HTTP ${attempt.httpStatus})` : ''} - {attempt.error ? ` — ${attempt.error}` : ''} -
  2. - ))} -
- )} -
- ))} -
-
- ); -} diff --git a/frontend/src/pages/OwnerPortalPage.tsx b/frontend/src/pages/OwnerPortalPage.tsx index f9cb779..2cc62a2 100644 --- a/frontend/src/pages/OwnerPortalPage.tsx +++ b/frontend/src/pages/OwnerPortalPage.tsx @@ -1,7 +1,7 @@ import React, { FormEvent, useEffect, useMemo, useState } from 'react'; import './owner-portal.css'; import { LoadingIndicator } from '../components/LoadingIndicator.js'; -import { OwnerAlertSettings, OwnerLoginSection, OwnerSection } from '../components/owner/OwnerPortalSections.js'; +import { OwnerLoginSection } from '../components/owner/OwnerPortalSections.js'; import { useRuntimeFeatures } from '../config/runtimeFeatures.js'; import { useVisibilityPoll } from '../hooks/useVisibilityPoll.js'; import { ApiResponseError, fetchJson } from '../utils/api.js'; @@ -51,7 +51,6 @@ export const OwnerPortalPage: React.FC = () => { const [live, setLive] = useState(null); const [liveError, setLiveError] = useState(null); const [lastHopStrength, setLastHopStrength] = useState([]); - const [activeSection, setActiveSection] = useState<'dashboard' | 'live' | 'settings'>('dashboard'); const [ownerSessionKey, setOwnerSessionKey] = useState(null); const clearOwnerSession = () => { @@ -294,12 +293,12 @@ export const OwnerPortalPage: React.FC = () => { {!loading && dashboard ? ( <> - - {activeSection === 'dashboard' &&
+
-

Dashboard

+
+

Repeater owner dashboard

+

Live status, identity history, telemetry, and packet activity for your owned nodes.

+
@@ -314,13 +313,31 @@ export const OwnerPortalPage: React.FC = () => { onChange={(e) => setSelectedNodeId(e.target.value)} > {dashboard.nodes.map((node) => ( - ))}
) : null} +
+ {dashboard.nodes.map((node) => ( +
+
+ {node.name ?? 'Unnamed node'} + {node.members.length} member key{node.members.length === 1 ? '' : 's'} +
+

Canonical ID {node.canonicalId}

+
    + {node.members.map((member) =>
  • {member}
  • )} +
+
+ ))} +
{live?.ownerNode.name ?? 'Unnamed'}{nodeRoleLabel(live?.ownerNode.role ?? null)}
{live?.ownerNode.network ?? '-'}Network
@@ -336,9 +353,9 @@ export const OwnerPortalPage: React.FC = () => {
{live?.packetsReceived24h ?? 0}Packets Received (24h)
{liveError ?

Live data error: {liveError}

: null} -
} +
- {activeSection === 'live' &&
+

Node Telemetry

@@ -488,10 +505,7 @@ export const OwnerPortalPage: React.FC = () => { ) : null}
- } - - {activeSection === 'settings' && } - + ) : null} diff --git a/frontend/src/pages/owner-portal.css b/frontend/src/pages/owner-portal.css index b039b51..e4e3f63 100644 --- a/frontend/src/pages/owner-portal.css +++ b/frontend/src/pages/owner-portal.css @@ -315,46 +315,6 @@ font-size: 11px; font-family: var(--font-mono); } -.owner-table-wrap { - width: 100%; - overflow-x: auto; - border: 1px solid var(--border); - border-radius: var(--radius); -} -.owner-table { - width: 100%; - min-width: 820px; - border-collapse: collapse; -} -.owner-table td { - text-align: left; - padding: 10px 12px; - border-bottom: 1px solid var(--border); - vertical-align: top; -} -.owner-table th { - text-align: left; - padding: 10px 12px; - border-bottom: 1px solid var(--border); - vertical-align: top; - color: var(--text-secondary); - font-family: var(--font-mono); - font-size: 11px; - letter-spacing: 0.08em; - text-transform: uppercase; -} -.owner-table td code { - font-family: var(--font-mono); - color: var(--text-primary); -} -.owner-roadmap { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 12px; -} -.owner-roadmap__item { - padding: 16px; -} .owner-select { margin: 12px 0 16px; display: flex; @@ -373,6 +333,60 @@ color: var(--text-primary); padding: 8px 10px; } +.owner-node-identities { + display: grid; + gap: 10px; + margin: 16px 0; +} +.owner-node-identity { + padding: 12px; + border: 1px solid var(--border); + border-radius: var(--radius); + background: var(--bg-panel-alt); +} +.owner-node-identity--selected { + border-color: rgba(0, 196, 255, 0.55); +} +.owner-node-identity__head { + display: flex; + justify-content: space-between; + gap: 12px; +} +.owner-node-identity__head strong { + color: var(--text-primary); + overflow-wrap: anywhere; +} +.owner-node-identity__head span { + color: var(--text-secondary); + font-size: 11px; +} +.owner-node-identity__canonical { + color: var(--text-secondary); + font-size: 11px; + margin: 6px 0 0; + font-family: var(--font-mono); + overflow-wrap: anywhere; +} +.owner-node-identity__members { + list-style: none; + display: flex; + flex-wrap: wrap; + gap: 6px; + margin: 8px 0 0; + padding: 0; +} +.owner-node-identity__members li { + min-width: 0; +} +.owner-node-identity__members code { + display: block; + padding: 3px 6px; + border: 1px solid var(--border); + border-radius: 4px; + color: var(--text-primary); + font-size: 10px; + overflow-wrap: anywhere; +} .owner-map-wrap { border: 1px solid var(--border); border-radius: var(--radius-lg); @@ -432,49 +446,12 @@ font-size: 13px; line-height: 1.45; } -.owner-section-tabs { - position: sticky; - top: 0; - z-index: 5; - display: flex; - gap: 8px; - padding: 10px 0; - background: var(--bg-base); -} -.owner-section-tabs button { - flex: 1; - border: 1px solid var(--border); - border-radius: var(--radius-md); - padding: 10px; - background: var(--bg-panel); - color: var(--text-secondary); - text-transform: capitalize; -} -.owner-section-tabs button[aria-pressed='true'] { border-color: var(--accent); color: var(--text-primary); } -.owner-settings__form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } -.owner-settings__form label { display: grid; gap: 4px; } -.owner-settings__form input, .owner-settings__form select { min-width: 0; padding: 10px; background: var(--bg-panel); border: 1px solid var(--border); color: var(--text-primary); } -.owner-settings__rules article { display: flex; justify-content: space-between; gap: 10px; padding: 10px; border-bottom: 1px solid var(--border); } -.owner-settings__rules article > div:first-child { display: grid; gap: 3px; min-width: 0; } -.owner-settings__rules article small { color: var(--text-muted); font-size: 0.75rem; overflow-wrap: anywhere; } -.owner-settings__rule-actions { display: flex; flex-wrap: wrap; gap: 6px; } -.owner-settings__rule-actions button:disabled { cursor: not-allowed; opacity: 0.45; } -.owner-settings__history { margin-top: 24px; } -.owner-settings__history details { border-top: 1px solid var(--border); padding: 9px 0; } -.owner-settings__history summary { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: 8px; cursor: pointer; } -.owner-settings__history p, -.owner-settings__history ol { color: var(--text-muted); font-size: 0.8rem; } -.owner-delivery-status { border-radius: 999px; padding: 2px 7px; background: var(--bg-active); text-transform: capitalize; } -.owner-delivery-status--succeeded { color: var(--online); } -.owner-delivery-status--failed, -.owner-delivery-status--dead_lettered { color: var(--danger); } @media (max-width: 700px) { .site-prose--wide { padding-inline: 12px; } .owner-summary-grid.site-stats-grid--6 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .owner-dashboard-grid { grid-template-columns: 1fr; grid-auto-rows: auto; } .owner-panel { min-height: 300px; } .owner-telemetry-strip { grid-template-columns: 1fr; } - .owner-settings__form { grid-template-columns: 1fr; } } @media (max-width: 640px) { .owner-summary-grid { grid-template-columns: 1fr; } @@ -486,8 +463,8 @@ .owner-list__row { grid-template-columns: 1fr; } .owner-list__metrics { justify-content: flex-start; } .owner-telemetry-strip { grid-template-columns: 1fr; } - .owner-roadmap { grid-template-columns: 1fr; } .owner-head { flex-direction: column; align-items: flex-start; } + .owner-node-identity__head { flex-direction: column; gap: 4px; } .owner-map { height: 260px; } } @media (max-width: 1180px) { diff --git a/frontend/src/pages/owner/ownerPortalModel.test.ts b/frontend/src/pages/owner/ownerPortalModel.test.ts index db0378f..72483f9 100644 --- a/frontend/src/pages/owner/ownerPortalModel.test.ts +++ b/frontend/src/pages/owner/ownerPortalModel.test.ts @@ -39,8 +39,32 @@ test('owner response guards reject structurally incomplete payloads', () => { ok: true, dashboard: { nodes: [], - totals: {}, - roadmap: [], }, }), true); + assert.equal(isOwnerSessionResponse({ + ok: true, + dashboard: { + nodes: [{ + node_id: 'A'.repeat(64), + canonicalId: 'A'.repeat(64), + members: ['A'.repeat(64)], + }], + }, + }), true); + assert.equal(isOwnerSessionResponse({ + ok: true, + dashboard: { + nodes: [{ node_id: 'A'.repeat(64) }], + }, + }), false); + assert.equal(isOwnerSessionResponse({ + ok: true, + dashboard: { + nodes: [{ + node_id: 'A'.repeat(64), + canonicalId: 'A'.repeat(64), + members: [42], + }], + }, + }), false); }); diff --git a/frontend/src/pages/owner/ownerPortalModel.ts b/frontend/src/pages/owner/ownerPortalModel.ts index fe1d89c..ac7dece 100644 --- a/frontend/src/pages/owner/ownerPortalModel.ts +++ b/frontend/src/pages/owner/ownerPortalModel.ts @@ -3,6 +3,8 @@ import { ScopedCache } from '../../utils/scopedCache.js'; export type OwnerNode = { node_id: string; + canonicalId: string; + members: string[]; name: string | null; network: string; last_seen: string | null; @@ -21,13 +23,6 @@ export function nodeRoleLabel(role: number | null): string { export type OwnerDashboard = { nodes: OwnerNode[]; - totals: { - ownedNodes: number; - packets24h: number; - packets7d: number; - packetsReceived24h: number; - }; - roadmap: string[]; }; export type OwnerSessionResponse = { @@ -183,8 +178,11 @@ export function isOwnerSessionResponse(value: unknown): value is OwnerSessionRes if (!isRecord(value) || value['ok'] !== true || !isRecord(value['dashboard'])) return false; const dashboard = value['dashboard']; return Array.isArray(dashboard['nodes']) - && isRecord(dashboard['totals']) - && Array.isArray(dashboard['roadmap']) + && dashboard['nodes'].every((node) => isRecord(node) + && typeof node['node_id'] === 'string' + && typeof node['canonicalId'] === 'string' + && Array.isArray(node['members']) + && node['members'].every((member) => typeof member === 'string')) && (value['mqttUsername'] == null || typeof value['mqttUsername'] === 'string'); } diff --git a/frontend/test/e2e/owner.spec.ts b/frontend/test/e2e/owner.spec.ts index 0627864..a7efc03 100644 --- a/frontend/test/e2e/owner.spec.ts +++ b/frontend/test/e2e/owner.spec.ts @@ -5,6 +5,8 @@ const NODE_ID = 'A'.repeat(64); const dashboard = { nodes: [{ node_id: NODE_ID, + canonicalId: NODE_ID, + members: [NODE_ID], name: 'Alpha Repeater', network: 'ukmesh', last_seen: '2026-07-16T10:00:00Z', @@ -14,13 +16,6 @@ const dashboard = { iata: 'TST', role: 2, }], - totals: { - ownedNodes: 1, - packets24h: 25, - packets7d: 100, - packetsReceived24h: 20, - }, - roadmap: [], }; test('session polling does not reset the repeater owner content', async ({ page }) => { @@ -62,6 +57,8 @@ test('session polling does not reset the repeater owner content', async ({ page await page.goto('/login'); await expect(page.getByText('Alpha Repeater', { exact: true })).toBeVisible(); + await expect(page.locator('.owner-section-tabs')).toHaveCount(0); + await expect(page.locator('.owner-settings')).toHaveCount(0); const initialSessionRequests = sessionRequests; const initialLiveRequests = liveRequests; @@ -119,8 +116,10 @@ test('owner map construction remains one across repeated live polls', async ({ p await page.route('**/api/owner/live-last-hop?**', (route) => route.fulfill({ json: { points: [] } })); await page.goto('/login'); - await page.getByRole('button', { name: 'live', exact: true }).click(); await expect(page.getByRole('heading', { name: 'Direct Sender Map' })).toBeVisible(); + await expect(page.getByRole('heading', { name: 'Node Telemetry' })).toBeVisible(); + await expect(page.locator('.owner-section-tabs')).toHaveCount(0); + await expect(page.locator('.owner-settings')).toHaveCount(0); await expect(page.locator('.owner-map')).toHaveCount(1); await expect.poll(() => page.evaluate(() => ( (window as typeof window & { __ownerMapLifecycle: { constructions: number } })