GitHub
08/15/2026, 7:42 AMdeploy/config/{api,tls}.yml in the SPA's Service
Config page, turns fixed-value fields into selectors, and makes the section cards
distinguishable. Contained to frontend/src/features/service-config/ — no Go, no
YAML, no new deps.
Changes
Field help. FIELD_HELP is now keyed ${service}:${section}.${field} →
${section}.${field} → ${field}, resolved most-specific-first. This lets api
and tls document the same field differently (Auth, TrustedProxies,
PostureEnabled, the osquery toggles, …) and fixes collisions where Type,
Host and Port appear in multiple sections. Old strings stay as fallbacks, so
no field lost its tooltip.
Selectors. Fixed-value fields render as `<select>`: LogLevel, LogFormat,
and Auth (jwt/none on api, none on tls). tls Auth offers only none because
validAuth in pkg/config/validation.go rejects everything else — offering more
would let an operator save a config that won't boot. A persisted value outside the
documented set is kept as a selectable option rather than silently coerced.
Sections. Each card now shows its section's description from the sample YAML,
plus a distinct icon (16 total; osquery and osctrld use their real brand marks,
derived from assets already in the repo). Card headers are sticky within their card
so the section name stays visible while scrolling. No new color tokens — --warning
and --signal already carry meaning on this page.
Testing
tsc --noEmit clean, 221 tests passing (9 added) covering enum rendering and save,
per-service help and description resolution, and the undocumented-value case.
jmpsec/osctrlGitHub
08/15/2026, 8:23 AM