aboutsummaryrefslogtreecommitdiffstats
path: root/docs/dashboard.md
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-07 22:35:09 +0100
committertv <tv@krebsco.de>2026-11-07 22:35:09 +0100
commit6fbcb1d3ad9360d7a05f1dcece383cfb095ba1d4 (patch)
tree0f5ba19054a7b09e50a3063edbef02906e9ea75b /docs/dashboard.md
parent1458ea92a41788a0f33e86e621817613f46055eb (diff)
dashboard: subscriptions
Double-click a node to subscribe: the page reads its own links from it directly with a narrowed token (reading the member list only), drawn over what this node knows; kept per swarm in the browser. Auth plan M3.
Diffstat (limited to 'docs/dashboard.md')
-rw-r--r--docs/dashboard.md17
1 files changed, 15 insertions, 2 deletions
diff --git a/docs/dashboard.md b/docs/dashboard.md
index 9879fb5..e62b67d 100644
--- a/docs/dashboard.md
+++ b/docs/dashboard.md
@@ -71,6 +71,9 @@ Every member of the swarm, by alias (or a shortened node ID):
* **Hollow**: it reports none: it doesn't answer this node's LINKS, or its last answer
is more than 90 s old (it is unreachable from here, stopped, or doesn't yet take this
node for a member).
+* **Black centre, ring of this node's blue**: subscribed: the page reads its links from
+ it, directly (below); the ring grey while the browser doesn't reach it (why, in its
+ tooltip).
* **Red outline**: this node holds it dormant (it has been silent, or said farewell).
* **Dashed orange ring**: its clock is off the swarm's: it differs from the median of
the members' clocks by more than `--clock-skew-warn`, beyond what the measurements
@@ -180,8 +183,18 @@ measured.
upright.
* **Drag a node**: move it. On a dynamic map, the others follow at once, and once
let go of, it moves back among them; on a static map it stays where it is put.
-* **Double-click a node**: open its dashboard, in this page, where the node publishes
- one (`--dashboard-url`, in the member list; e.g. behind a reverse proxy,
+* **Double-click a node**: subscribe to its links, or no longer. The page then reads
+ the node's own links from it, live, as it measures them (its
+ `/admin/dashboard/links/own/events`, at the dashboard it publishes,
+ `--dashboard-url`), with a token from this node that lets it read the member list
+ only ([`access.md`](access.md), Tokens); its links are drawn as it reports them, over what
+ this node knows of them. The browser must reach that dashboard: not one behind NAT, on
+ Tor alone, or plain `http` from an `https` page; the node allows this page's origin
+ as a member's dashboard (`--cors-origins` for others). Subscriptions are kept in the
+ browser, and handed over with the rest.
+* **Right-click a node**: its menu: subscribing, and opening its dashboard.
+* **Open a node's dashboard** (its menu): in this page, where the node publishes one
+ (`--dashboard-url`, in the member list; e.g. behind a reverse proxy,
[`operations.md`](operations.md)). The other dashboard asks for its own credentials
where its proxy or node does. It opens as this one was left: the map's nodes where
they were (on a dynamic map they then move to their places among the other node's