From 7e7765187b81a9888e7be90482105077202fa00a Mon Sep 17 00:00:00 2001 From: rcourtman Date: Mon, 20 Apr 2026 10:44:58 +0100 Subject: [PATCH] ledger: tell the truth on Platform API remove confirm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agent rows already got an honest confirm-expansion ("Removing forgets this agent from the ledger; history is retained…") plus uninstall commands as a courtesy. Platform API rows (PVE / PBS / PMG / VMware / TrueNAS) had nothing beyond "Click again to confirm," which left two honest questions unanswered: - Does this delete my history? (No — history is retained in v1.) - Does this log me out of the platform itself? (No — credentials on the platform side are untouched.) Add a parallel expansion for non-agent rows that answers both directly. Matches the plan's "user-facing copy in Remove dialog must be explicit" note and keeps honesty symmetric between Agent and Platform API rows. --- .../components/Settings/ConnectionsTable.tsx | 12 +++++++++++ .../__tests__/ConnectionsTable.test.tsx | 21 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/frontend-modern/src/components/Settings/ConnectionsTable.tsx b/frontend-modern/src/components/Settings/ConnectionsTable.tsx index 5d907b1fd..4de19b152 100644 --- a/frontend-modern/src/components/Settings/ConnectionsTable.tsx +++ b/frontend-modern/src/components/Settings/ConnectionsTable.tsx @@ -219,6 +219,18 @@ export const ConnectionsTable: Component = (props) => { + + + +

+ Removing forgets this connection from Pulse; history is retained. + Credentials on the platform itself are untouched — revoke them there + separately if you want to invalidate access. +

+
+
+
+ diff --git a/frontend-modern/src/components/Settings/__tests__/ConnectionsTable.test.tsx b/frontend-modern/src/components/Settings/__tests__/ConnectionsTable.test.tsx index 9bd9e515a..2164dda77 100644 --- a/frontend-modern/src/components/Settings/__tests__/ConnectionsTable.test.tsx +++ b/frontend-modern/src/components/Settings/__tests__/ConnectionsTable.test.tsx @@ -190,6 +190,27 @@ describe('ConnectionsTable', () => { expect(screen.queryByRole('button', { name: 'Remove' })).toBeNull(); }); + it('tells the truth on Platform API remove confirm: history retained, platform untouched', () => { + const actions = makeActions({ confirmingRemove: () => true }); + const pveConnection = connectionFixture({ + id: 'pve:zeus', + type: 'pve', + name: 'zeus', + }); + render(() => ( + [row({ connection: pveConnection, isAgent: false })]} + actions={actions} + onEdit={vi.fn()} + /> + )); + + expect(screen.getByText(/history is retained/i)).toBeInTheDocument(); + expect(screen.getByText(/Credentials on the platform itself are untouched/i)).toBeInTheDocument(); + // No uninstall block for Platform API rows — only agents get that courtesy. + expect(screen.queryByText(/--uninstall/)).toBeNull(); + }); + it('reveals the agent uninstall commands while confirming removal of an agent row', () => { const actions = makeActions({ confirmingRemove: () => true }); const agentConnection = connectionFixture({