mirror of
https://github.com/Kpa-clawbot/meshcore-analyzer.git
synced 2026-06-04 18:01:24 +00:00
317b59ab10
## Summary - Adds configurable GPS polygon areas to `config.json`; nodes are attributed to an area if their last-known position falls inside the polygon - New `Area: …` dropdown filter (matching the existing region filter style) appears on all analytics, nodes, packets, map, and live screens when areas are configured - Backend resolves area membership with a 30s TTL cache; area filter bypasses the 500-node cap on `/api/bulk-health` so all area nodes are always returned - Includes a polygon builder tool (`/area-map.html`) for drawing and exporting area boundaries ## Changes **Backend** - `AreaEntry` type + `Areas` config field - `GetNodePubkeysInArea` DB query + `resolveAreaNodes` (30s TTL, `areaNodeMu` RWMutex) - `PacketQuery.Area` + `filterPackets` polygon check - `?area=` param propagated through all analytics, topology, clock-health, and bulk-health routes - `/api/config/areas` endpoint **Frontend** - `area-filter.js`: single-select dropdown, persists to localStorage, cleans up stale keys on load - Wired into analytics, nodes, packets, channels, map, and live pages - Live map clears node markers on area change **Docs & tools** - `docs/user-guide/area-filter.md` — configuration and usage guide - `docs/api-spec.md` — updated with new endpoint and `?area=` param table - `tools/area-map.html` — polygon builder for defining area boundaries - Demo areas added to `config.example.json` ## Test plan - [x] No areas configured → filter dropdown does not appear on any page - [x] Areas configured → dropdown appears, "All" selected by default - [x] Selecting an area filters nodes/packets/topology/map correctly - [x] Selecting "All" restores unfiltered view - [x] Selection persists across page reloads (localStorage) - [x] Stale localStorage key (area removed from config) is cleared on load - [x] `/api/bulk-health?area=X` returns all nodes in area (no 500-node cap) - [x] `/api/config/areas` returns correct list 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Kpa-clawbot <kpaclawbot@outlook.com> Co-authored-by: openclaw-bot <bot@openclaw.local>
75 lines
2.3 KiB
Markdown
75 lines
2.3 KiB
Markdown
# Nodes
|
|
|
|
The Nodes page lists every node your mesh has seen — repeaters, companions, rooms, and sensors.
|
|
|
|
[Screenshot: nodes list with status indicators]
|
|
|
|
## What you see
|
|
|
|
Each row shows:
|
|
|
|
- **Name** — the node's advertised name (or public key if unnamed)
|
|
- **Role** — Repeater, Companion, Room, or Sensor
|
|
- **Status** — color-coded health indicator
|
|
- **Last seen** — when the node was last heard
|
|
- **Advert count** — how many advertisements this node has sent
|
|
|
|
## Status indicators
|
|
|
|
| Indicator | Meaning |
|
|
|-----------|---------|
|
|
| 🟢 Active | Heard recently (within threshold for its role) |
|
|
| 🟡 Degraded | Not heard for a while but not yet silent |
|
|
| 🔴 Silent | Not heard for an extended period |
|
|
|
|
Thresholds differ by role. Infrastructure nodes (repeaters, rooms) have longer grace periods than companions. See [Configuration](configuration.md) for `healthThresholds`.
|
|
|
|
## Filtering
|
|
|
|
### Role tabs
|
|
|
|
Click **All**, **Repeaters**, **Rooms**, **Companions**, or **Sensors** to filter by role.
|
|
|
|
### Search
|
|
|
|
Type in the search box to filter by name or public key. The filter applies instantly.
|
|
|
|
### Status filter
|
|
|
|
Filter to show only active, degraded, or silent nodes.
|
|
|
|
### Area filter
|
|
|
|
If [areas are configured](area-filter.md), an area pill bar appears above the list. Selecting an area shows only nodes whose GPS position falls within that area.
|
|
|
|
### Last heard filter
|
|
|
|
Filter nodes by how recently they were heard (e.g., last hour, last 24h).
|
|
|
|
## Sorting
|
|
|
|
Click any column header to sort. Click again to reverse the order. Your sort preference is saved across sessions.
|
|
|
|
## Node detail
|
|
|
|
Click a node row to open the **detail pane** on the right. It shows:
|
|
|
|
- Full public key
|
|
- Role and status explanation
|
|
- Location (if known)
|
|
- Recent packets involving this node
|
|
- Neighbor nodes
|
|
- Signal statistics
|
|
|
|
Click the node name in the detail pane to open the **full node page** with complete history, analytics, and health data.
|
|
|
|
## Favorites
|
|
|
|
Nodes you've claimed on the Home page appear as favorites. You can also star nodes directly from the Nodes page.
|
|
|
|
## Tips
|
|
|
|
- Use the search box for quick lookups — it matches partial names and keys
|
|
- Sort by "Last seen" descending to find the most active nodes
|
|
- The status explanation tells you exactly why a node is marked degraded or silent
|