From 52652e2554dddfca2f5025112b84dc648d1a9cfd Mon Sep 17 00:00:00 2001 From: rcourtman Date: Mon, 30 Mar 2026 09:12:37 +0100 Subject: [PATCH] feat(setup): add platform-connections handoff --- .../v6/internal/subsystems/agent-lifecycle.md | 3 +- .../SetupWizard/SetupCompletionPanel.tsx | 24 +++++++++++++++- .../SetupCompletionPanel.guardrails.test.ts | 11 ++++++++ .../__tests__/SetupCompletionPanel.test.tsx | 17 +++++++++++ ...setup-platform-connections-handoff.spec.ts | 28 +++++++++++++++++++ 5 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 tests/integration/tests/30-setup-platform-connections-handoff.spec.ts diff --git a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md index 94ef112ab..921a5df08 100644 --- a/docs/release-control/v6/internal/subsystems/agent-lifecycle.md +++ b/docs/release-control/v6/internal/subsystems/agent-lifecycle.md @@ -149,7 +149,8 @@ management, and fleet control surfaces. that route as the first-host install step, and present `Platform connections` as the named API-backed alternative for Proxmox, TrueNAS, and future provider integrations rather than leaving post-setup next actions - implicit. + implicit. That API-backed alternative must be a real first-run handoff + control, not prose-only guidance. 6. Keep `frontend-modern/src/components/Settings/InfrastructureInstallerSection.tsx` oriented around the first monitored host. Install-token generation, governed command copy, and install instructions belong to the canonical diff --git a/frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx b/frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx index 4112f06fa..c6378f611 100644 --- a/frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx +++ b/frontend-modern/src/components/SetupWizard/SetupCompletionPanel.tsx @@ -85,6 +85,7 @@ interface ConnectedAgent { const RELAY_SETTINGS_PATH = '/settings/system-relay'; const INFRASTRUCTURE_INSTALL_PATH = '/settings/infrastructure/install'; +const INFRASTRUCTURE_PLATFORMS_PATH = '/settings/infrastructure/platforms'; const SETUP_WIZARD_TELEMETRY_SURFACE = 'setup_wizard_complete'; const pd = (resource: Resource) => @@ -254,6 +255,7 @@ export const SetupCompletionPanel: Component = (props) => { const downloadCredentials = () => { const baseUrl = getPulseBaseUrl(); const installWorkspaceUrl = `${baseUrl.replace(/\/$/, '')}${INFRASTRUCTURE_INSTALL_PATH}`; + const platformConnectionsUrl = `${baseUrl.replace(/\/$/, '')}${INFRASTRUCTURE_PLATFORMS_PATH}`; const content = `Pulse Credentials ================== Generated: ${new Date().toISOString()} @@ -272,12 +274,20 @@ Infrastructure Install Workspace: --------------------------------- ${installWorkspaceUrl} +Platform Connections Workspace: +------------------------------- +${platformConnectionsUrl} + Use the Infrastructure Install workspace to: - continue with the first-host install token Pulse prepares from setup - choose the agent connection URL - configure TLS and custom CA options - copy Linux, macOS, Windows, and related install commands +Use the Platform connections workspace when: +- the first system is API-backed, such as Proxmox or TrueNAS +- Pulse should poll that platform directly instead of starting with a host install + Keep these credentials secure! `; @@ -296,6 +306,10 @@ Keep these credentials secure! props.onComplete(INFRASTRUCTURE_INSTALL_PATH); }; + const handleOpenPlatformConnections = () => { + props.onComplete(INFRASTRUCTURE_PLATFORMS_PATH); + }; + const handleGoToDashboard = () => { props.onComplete('/'); }; @@ -664,7 +678,7 @@ Keep these credentials secure!
{hasConnectedAgents() ? 'Infrastructure Install stays available any time you want to add more systems later.' - : 'Use that workspace any time you want to add more systems later.'} + : 'If the first system is API-backed, use Platform connections instead of starting with host install.'}
@@ -676,6 +690,14 @@ Keep these credentials secure! > {hasConnectedAgents() ? 'Go to Dashboard' : 'Open Infrastructure Install'} + + +