diff --git a/server/internal/adminui/render.go b/server/internal/adminui/render.go index 44b93b6..0e694c9 100644 --- a/server/internal/adminui/render.go +++ b/server/internal/adminui/render.go @@ -155,6 +155,9 @@ const baseHTML = ` font:.85rem/1.3 var(--mono);margin-bottom:.35rem} .rec-head .id{overflow-wrap:anywhere;color:var(--ink)} .rec form{margin-top:.6rem} + /* Why a check matters is a sentence, so it is set as one — full width under the row rather + than squeezed into a column, where it would wrap to a ribbon two words wide. */ + .why{font:.85rem/1.5 var(--prose);color:var(--dim);margin-top:.45rem;max-width:52rem} .tag{font:.68rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase; padding:.24rem .45rem;border-radius:2px;border:1px solid currentColor;white-space:nowrap} .v-green{color:var(--green)} .v-yellow{color:var(--amber)} @@ -196,17 +199,19 @@ const baseHTML = ` main{padding:1.6rem} .recs{margin:.8rem 0} /* Every row shares one grid, so the columns agree across rows without a header or a table. */ - .rec{display:grid;grid-template-columns:12.5rem minmax(0,1fr) auto;gap:.35rem 1.4rem; + .rec{display:grid;grid-template-columns:minmax(12.5rem,18rem) minmax(0,1fr) auto;gap:.35rem 1.4rem; align-items:baseline;background:none;border:0;border-bottom:1px solid var(--rule); border-radius:0;padding:.6rem 0;margin:0} .rec-head{margin:0;flex-direction:column;align-items:flex-start;gap:.3rem} .rec form{margin:0} /* Widths follow the content: a device name needs room, a finding count does not. */ - .readout{display:grid;grid-template-columns:1.7fr .9fr .9fr 1.1fr;gap:.15rem 1.2rem} - .readout li{padding:0} - .readout .lead{display:none} - .readout .v{text-align:left} + .rec .readout{display:grid;grid-template-columns:1.7fr .9fr .9fr 1.1fr;gap:.15rem 1.2rem} + .rec .readout li{padding:0} + .rec .readout .lead{display:none} + .rec .readout .v{text-align:left} .open{white-space:nowrap} + /* Spans the full row: the sentence is the useful part, not a fourth column. */ + .why{grid-column:1/-1;margin-top:.1rem} }
@@ -270,9 +275,47 @@ const baseHTML = ` {{end}} {{with .SelfTest}}

Self-test

-

What this server can measure from where it stands. A capability missing here is - missing from every run it takes part in.

-
{{printf "%+v" .}}
+

What this server can measure from where it stands, checked at startup. A + capability missing here is missing from every run this server takes part in — so a + client asking for that measurement gets nothing, rather than a wrong answer.

+ + {{if .Sysctls}} +

Kernel settings

+
+ {{range .Sysctls}} +
+
{{.Name}} + {{.Severity}}
+
    +
  • found{{.Got}}
  • +
  • wanted{{.Want}}
  • +
+
{{.Why}}
+
+ {{end}} +
+ {{end}} + {{if .EgressMTU}} +

Egress path MTU

+
+ {{range .EgressMTU}} +
+
{{.Target}} + {{if .FullMTU}}full{{else}}reduced{{end}}
+
    +
  • discovered + {{if .DiscoveredMTU}}{{.DiscoveredMTU}} bytes{{else}}not measured{{end}}
  • +
+ {{with .Err}}
{{.}}
{{end}} +
+ {{end}} +
+ {{end}} {{end}} {{else if eq .Page "devices"}}