Cluster roster: each node's mail and connections over the period #80

Merged
jcoffey-dev merged 1 commits from feat/node-sparklines into main 2026-10-05 22:13:22 +00:00
Owner

Admin UX roadmap item 15, the "sparklines in tables" half. The server keeps history server-wide or per node, so the table it fits is the cluster roster.

What it does

  • Each node's card in Dashboard › Cluster gets two strips of the period (24 slices), each with its total: Mail (received and sent) and Connections (SMTP, IMAP, POP3, HTTP and ManageSieve connections opened).
  • Strips follow the period and a chart zoom like everything else on the page; a silent node's strips turn red.
  • They come from the samples that node wrote (nodeId, servers from 2026.9.30 on). With older servers no sample says which node wrote it, and the strips stay hidden.
  • A sample's nodeId is the node's cluster id: the server seeds sample ids with SnowflakeIdGenerator::set_node_id(bp.node_id()), the same number x:ClusterNode.nodeId reports.

Also: the strip under a readout is now BarStrip, shared by both.

Strings: 2 new English strings (cc.nodeMail, cc.nodeConnections). No other catalogues yet.

Checked

  • npm test (61 files, 593 tests; 2 new for nodeSeries), typecheck, lint, i18n check, build.
  • Not checked in a browser: the roster only shows on a cluster, and the local preview is one node. Worth a look on the cluster's console before or after deploy.
Admin UX roadmap item 15, the "sparklines in tables" half. The server keeps history server-wide or per node, so the table it fits is the cluster roster. **What it does** - Each node's card in Dashboard › Cluster gets two strips of the period (24 slices), each with its total: **Mail** (received and sent) and **Connections** (SMTP, IMAP, POP3, HTTP and ManageSieve connections opened). - Strips follow the period and a chart zoom like everything else on the page; a silent node's strips turn red. - They come from the samples that node wrote (`nodeId`, servers from 2026.9.30 on). With older servers no sample says which node wrote it, and the strips stay hidden. - A sample's `nodeId` is the node's cluster id: the server seeds sample ids with `SnowflakeIdGenerator::set_node_id(bp.node_id())`, the same number `x:ClusterNode.nodeId` reports. **Also:** the strip under a readout is now `BarStrip`, shared by both. **Strings:** 2 new English strings (`cc.nodeMail`, `cc.nodeConnections`). No other catalogues yet. **Checked** - `npm test` (61 files, 593 tests; 2 new for `nodeSeries`), typecheck, lint, i18n check, build. - **Not checked in a browser:** the roster only shows on a cluster, and the local preview is one node. Worth a look on the cluster's console before or after deploy.
jcoffey-dev added 1 commit 2026-10-05 22:10:51 +00:00
Cluster roster: each node's mail and connections over the period
ci / github (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / build (pull_request) Successful in 1m55s
ci / publish (pull_request) Skipped
3a15a2e1be
Admin UX roadmap item 15, "sparklines in tables". Each node's card in
the cluster roster gets two strips of the period, with totals: mail
(received and sent) and connections opened. They come from the samples
that node wrote; servers before 2026.9.30 don't say which node wrote a
sample, and then the strips stay hidden.

The strip of bars under a readout becomes BarStrip, so the roster draws
the same one.

2 new English strings; no other catalogues yet.
jcoffey-dev merged commit dc1fd87749 into main 2026-10-05 22:13:22 +00:00
jcoffey-dev deleted branch feat/node-sparklines 2026-10-05 22:13:22 +00:00
Sign in to join this conversation.