infra: surface the agent's Proxmox auto-register shortcut

On a PVE or PBS host, the agent mints its own API token and registers
the node via RunAll (internal/hostagent/proxmox_setup.go + agent.go
:1295–1340). That is the fastest path to a working Proxmox connection
— no address paste, no credentials. Previous copy framed the agent
purely as "host metrics you add on top," which hid the shortcut and
steered Proxmox users into pasting credentials they did not need.

Reframe the two sections:
- "Or connect a remote platform API" — five tiles for when Pulse lives
  elsewhere from the target (PMG / VMware / TrueNAS have no host-side
  agent path, and remote Proxmox reaches the tile from a different box).
- "Or install the agent on the host" — leads with "On a Proxmox host,
  this is the fastest path," then keeps the host-metrics pitch for
  bare-metal Linux / Unraid / FreeBSD / Docker / Kubernetes.

Architecture pins extended to guard the Proxmox auto-register copy.
This commit is contained in:
rcourtman 2026-04-20 15:56:42 +01:00
parent d39a935f86
commit 85b816c606
2 changed files with 15 additions and 9 deletions

View file

@ -102,7 +102,7 @@ export const ConnectionEditor: Component<ConnectionEditorProps> = (props) => {
<section class="space-y-3">
<div class="flex items-center gap-3 text-xs font-semibold uppercase tracking-wide text-muted">
<span class="h-px flex-1 bg-border" aria-hidden="true" />
Or pick a platform to connect
Or connect a remote platform API
<span class="h-px flex-1 bg-border" aria-hidden="true" />
</div>
@ -140,7 +140,7 @@ export const ConnectionEditor: Component<ConnectionEditorProps> = (props) => {
<section class="space-y-3">
<div class="flex items-center gap-3 text-xs font-semibold uppercase tracking-wide text-muted">
<span class="h-px flex-1 bg-border" aria-hidden="true" />
Or install a host-level agent
Or install the agent on the host
<span class="h-px flex-1 bg-border" aria-hidden="true" />
</div>
@ -163,14 +163,15 @@ export const ConnectionEditor: Component<ConnectionEditorProps> = (props) => {
</div>
</div>
<div class="text-xs text-muted">
Reports CPU temperature, disk SMART, systemd services, and network metrics
from the host itself. Auto-detects Docker, Kubernetes, and Proxmox on that
machine.
<span class="font-medium text-base-content">On a Proxmox host, this is the
fastest path.</span> The agent creates the PVE / PBS API token itself and
auto-registers the node — no address or credentials to paste above.
</div>
<div class="text-xs text-muted">
Use it for bare-metal Linux / Unraid / FreeBSD, or install it on Proxmox /
TrueNAS hosts <span class="font-medium">in addition to</span> a platform
connection above for deeper per-host telemetry.
It also reports CPU temperature, disk SMART, systemd services, and network
metrics from the host, and auto-detects Docker and Kubernetes on that
machine. Required for bare-metal Linux / Unraid / FreeBSD targets that have
no platform API to connect.
</div>
</div>
<div

View file

@ -81,7 +81,12 @@ describe('settings architecture guardrails', () => {
expect(connectionEditorSource).toContain('const DEFAULT_PLATFORM_TYPES: ConnectionType[] =');
expect(connectionEditorSource).not.toContain("'agent'] =");
expect(connectionEditorSource).toContain('<AddressProbeStep');
expect(connectionEditorSource).toContain('Or install a host-level agent');
expect(connectionEditorSource).toContain('Or install the agent on the host');
// Honest framing: the agent auto-registers PVE/PBS when installed on a
// Proxmox node, so the card must surface that shortcut rather than
// pretending the agent is only for host metrics.
expect(connectionEditorSource).toContain('On a Proxmox host, this is the');
expect(connectionEditorSource).toContain('auto-registers the node');
// The agent install path is a first-class ledger-header action, not a
// subtext offramp inside the editor — make sure it doesn't drift back.
expect(connectionEditorSource).not.toContain('Install the Unified Agent on a host');