diff --git a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md index 2c1759d49..79f2633c4 100644 --- a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md +++ b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md @@ -195,6 +195,17 @@ management, and fleet control surfaces. where the first-host scoped install token is prepared from setup handoff, not as a second manual token-generation task the operator still needs to figure out. +10. Keep API-backed platform onboarding explicit across + `frontend-modern/src/components/Settings/infrastructureOperationsModel.tsx`, + `frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx`, + `frontend-modern/src/components/Settings/useInfrastructureInstallState.tsx`, + `frontend-modern/src/components/Settings/InfrastructureWorkspace.tsx`, and + `frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx`. + TrueNAS must be presented as a Platform connections workflow first, not as + a dedicated Unified Agent install profile. The install workspace may remain + available for optional later agent augmentation on TrueNAS, but first-run + copy, alternative CTAs, and install-profile lists must not imply that an + agent install is the required bootstrap for TrueNAS support in Pulse. ## Current State diff --git a/docs/release-control/v6/internal/subsystems/api-contracts.md b/docs/release-control/v6/internal/subsystems/api-contracts.md index d24b4ab43..1d014b1ef 100644 --- a/docs/release-control/v6/internal/subsystems/api-contracts.md +++ b/docs/release-control/v6/internal/subsystems/api-contracts.md @@ -228,17 +228,6 @@ Own canonical runtime payload shapes between backend and frontend. operators can receive the first success handoff without typing a hostname or agent ID. 20. Keep the shared first-run install-token transport explicit on -21. Keep connected-infrastructure surface vocabulary canonical across the - shared `/api/state` and reporting/install consumers: `frontend-modern/src/types/api.ts` - must treat `truenas` as a first-class connected-infrastructure surface kind, - and connected-infrastructure consumers such as - `frontend-modern/src/components/Settings/infrastructureOperationsModel.tsx` - and - `frontend-modern/src/components/Settings/useInfrastructureReportingState.tsx` - must preserve the transport distinction between machine-managed surfaces - (`agent`, `docker`, `kubernetes`) and platform-connections-managed - surfaces (`proxmox`, `pbs`, `pmg`, `truenas`) instead of collapsing them - into one uninstall/stop-monitoring model. `/api/security/tokens` as used by `frontend-modern/src/components/Settings/useInfrastructureInstallState.tsx`: once quick setup has produced the setup handoff credentials, the canonical @@ -249,7 +238,33 @@ Own canonical runtime payload shapes between backend and frontend. install-state surface must describe that prepared token path consistently with the live runtime behavior rather than directing the operator to create another install token manually. -21. Keep local trial-start transport explicit on the shared commercial API +21. Keep connected-infrastructure surface vocabulary canonical across the + shared `/api/state` and reporting/install consumers: + `frontend-modern/src/types/api.ts` must treat `truenas` as a first-class + connected-infrastructure surface kind, and connected-infrastructure + consumers such as + `frontend-modern/src/components/Settings/infrastructureOperationsModel.tsx` + and + `frontend-modern/src/components/Settings/useInfrastructureReportingState.tsx` + must preserve the transport distinction between machine-managed surfaces + (`agent`, `docker`, `kubernetes`) and platform-connections-managed + surfaces (`proxmox`, `pbs`, `pmg`, `truenas`) instead of collapsing them + into one uninstall/stop-monitoring model. +22. Keep API-backed first-target onboarding canonical on that same shared + infrastructure-settings boundary: + `frontend-modern/src/components/Settings/infrastructureOperationsModel.tsx`, + `frontend-modern/src/components/Settings/useInfrastructureInstallState.tsx`, + `frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx`, + `frontend-modern/src/components/Settings/InfrastructureWorkspace.tsx`, and + `frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx` must + present TrueNAS and other API-backed platforms as Platform connections-first + onboarding rather than as dedicated unified-agent install profiles. The + shared host-install contract may guide operators through the first + agent-managed host, but alternate CTAs and setup-completion guidance must + route API-backed first systems to `/settings/infrastructure/platforms` + instead of implying that a host install command is required before those + platforms can report into Pulse. +23. Keep local trial-start transport explicit on the shared commercial API boundary: `/api/license/trial/start` must preserve the hosted-signup redirect contract during the allowed retry burst, then return the actual remaining backoff in both `Retry-After` and diff --git a/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx b/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx index c90be5f33..6a885c78b 100644 --- a/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx +++ b/frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx @@ -1,7 +1,6 @@ import type { Component } from 'solid-js'; import { For, Show, createSignal } from 'solid-js'; import Server from 'lucide-solid/icons/server'; -import { ProxmoxIcon } from '@/components/icons/ProxmoxIcon'; import SettingsPanel from '@/components/shared/SettingsPanel'; import { copyToClipboard } from '@/utils/clipboard'; import { formatAbsoluteTime, formatRelativeTime } from '@/utils/format'; @@ -138,31 +137,29 @@ export const InfrastructureInstallerSection: Component = () => {
Start with the first host you want Pulse to monitor.
+Use this workspace for the first agent-managed host.
- Install the Pulse agent on that system first. Once it connects, Pulse can keep using this - workspace to add more hosts and layered platform integrations. + Install the Pulse agent here only when the first system should run the unified agent + directly. If the first system is API-backed, such as TrueNAS or Proxmox, open Platform + connections instead.
- Proxmox nodes can be added here with the unified agent for extra capabilities like - temperature monitoring and Pulse Patrol automation (auto-creates the required token - and links the node). -
- -+ API-backed platforms such as Proxmox and TrueNAS belong in Platform connections. Use + this install workspace only for systems where Pulse should run the unified agent on + the machine itself. +
+{state.getSelectedInstallProfile().description}
++ API-backed platforms such as TrueNAS connect through Platform connections + rather than a dedicated install profile here. +
Adds flags to shell-based install commands:{' '}
diff --git a/frontend-modern/src/components/Settings/InfrastructureWorkspace.tsx b/frontend-modern/src/components/Settings/InfrastructureWorkspace.tsx
index 6c8937b93..c98f1afbf 100644
--- a/frontend-modern/src/components/Settings/InfrastructureWorkspace.tsx
+++ b/frontend-modern/src/components/Settings/InfrastructureWorkspace.tsx
@@ -33,17 +33,17 @@ export const InfrastructureWorkspace: Component
- Start with Install on a host to connect the first machine you want Pulse to monitor.
- If you already know you want an API-backed platform such as Proxmox or TrueNAS
- instead, go straight to Platform connections.
+ Use Install on a host for the first machine that should run the unified agent. If the
+ first system is API-backed, such as Proxmox or TrueNAS, go straight to Platform
+ connections.
1. Choose path
- Install Pulse on a host first, or open Platform connections for Proxmox, TrueNAS,
- and other systems Pulse should poll through their own APIs.
+ Choose Install on a host for agent-managed systems, or open Platform connections
+ for Proxmox, TrueNAS, and other systems Pulse should poll through their own APIs.
Connect your first system