diff --git a/work/dashboard-frontend/src/App.tsx b/work/dashboard-frontend/src/App.tsx
index f66e17a..026d499 100644
--- a/work/dashboard-frontend/src/App.tsx
+++ b/work/dashboard-frontend/src/App.tsx
@@ -10,6 +10,12 @@ import Reference from './pages/Reference'
import AdapterConfig from './pages/AdapterConfig'
import GaugeSites from './pages/GaugeSites'
import TownAnchors from './pages/TownAnchors'
+import MeshCoreRouting from './pages/MeshCoreRouting'
+import MeshCoreConnection from './pages/MeshCoreConnection'
+import MeshCoreContacts from './pages/MeshCoreContacts'
+import MeshCoreCompanion from './pages/MeshCoreCompanion'
+import MeshtasticConnection from './pages/MeshtasticConnection'
+import MeshtasticSources from './pages/MeshtasticSources'
import { ToastProvider } from './components/ToastProvider'
function App() {
@@ -27,6 +33,12 @@ function App() {
+ This page will show live status for the AIDA MeshCore companion — its connection + health and the list of channels it is currently joined to. Once the companion status + API is available, you'll be able to monitor the companion here and see which channels + are reachable for broadcast delivery. +
++ Transport mode and MeshCore node connection. +
++ This page will show the MeshCore companion's contact roster — the names, public + keys, last-heard timestamps, and positions of the nodes your companion knows about. + It becomes available once the companion data API is wired up, at which point contacts + can be browsed here and referenced directly when configuring MeshCore DM delivery. +
++ Per-family MeshCore delivery. Choose which channels fire at each severity, the + MeshCore channel name, and DM contacts. +
++ Channel name on your MeshCore companion (e.g. AIDA). Blank = not broadcast on + MeshCore. +
++ Connection to your Meshtastic radio (serial or TCP). +
++ MeshMonitor integration and mesh awareness data sources. +
+| severity | + {channels.map((c) => ( +{colLabel(c)} | + ))} +
|---|---|
| {sev} | + {channels.map((ch) => { + const on = (severityChannels[sev] || []).includes(ch) + return ( +
+ {
+ // Shallow-copy the dict so we don't mutate state, then
+ // only modify the specific channel being toggled.
+ const cur: Record |
+ )
+ })}
+
| {TOGGLE_CHANNELS.map((c) => | {c.replace('_', ' ')} | )}
|---|---|
| {sev} | - {TOGGLE_CHANNELS.map((ch) => { - const on = (t.severity_channels?.[sev] || []).includes(ch) - return ( -
- {
- const cur: Record |
- )
- })}
-
MeshCore channel name on your companion (e.g. AIDA); blank = not broadcast on MeshCore.
+