From f30f9e7a81bc50f7eb4a254df2ded1a7c7a5848f Mon Sep 17 00:00:00 2001 From: rcourtman Date: Wed, 29 Apr 2026 00:01:30 +0100 Subject: [PATCH] Neutralize self-hosted activation empty state --- docs/release-control/v6/internal/subsystems/cloud-paid.md | 8 +++++--- .../src/utils/__tests__/licensePresentation.test.ts | 2 +- frontend-modern/src/utils/licensePresentation.ts | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/release-control/v6/internal/subsystems/cloud-paid.md b/docs/release-control/v6/internal/subsystems/cloud-paid.md index 9c893f447..eef32da95 100644 --- a/docs/release-control/v6/internal/subsystems/cloud-paid.md +++ b/docs/release-control/v6/internal/subsystems/cloud-paid.md @@ -1496,9 +1496,11 @@ it as a current public Pulse Pro+ package. When direct plan-selection intent opens the explicit self-hosted comparison surface, the shared presentation helpers must show Pro's operations, admin, and reporting extras together while still framing Community, Relay, and Pro as unlimited core monitoring rather -than monitored-system capacity tiers. The same factual plan surface must use -neutral inactive-state copy such as paid self-hosted activation rather than -v5-era "No Pro license" language. +than monitored-system capacity tiers. The same factual plan surface must keep +inactive-state copy neutral: default Community installs may say no activation +key is active, but they must not foreground paid self-hosted activation or +v5-era "No Pro license" language before the operator opens an explicit +comparison, checkout, activation, or recovery path. The shared license presentation owner also holds self-hosted Pro settings trial-ended notice copy for `ProLicensePlanSection.tsx`; that surface must consume canonical helper notices instead of carrying inline upgrade copy or diff --git a/frontend-modern/src/utils/__tests__/licensePresentation.test.ts b/frontend-modern/src/utils/__tests__/licensePresentation.test.ts index ba4fc740e..f1aa340e6 100644 --- a/frontend-modern/src/utils/__tests__/licensePresentation.test.ts +++ b/frontend-modern/src/utils/__tests__/licensePresentation.test.ts @@ -46,7 +46,7 @@ describe('licensePresentation', () => { text: 'Loading license status...', }); expect(getNoActiveSelfHostedActivationState()).toEqual({ - text: 'No paid self-hosted activation is active on this instance.', + text: 'No activation key is active on this instance.', }); expect(SELF_HOSTED_RECOVERY_PRESENTATION).toMatchObject({ disclosureLabel: 'Redeem existing key', diff --git a/frontend-modern/src/utils/licensePresentation.ts b/frontend-modern/src/utils/licensePresentation.ts index 969762609..c334bd79c 100644 --- a/frontend-modern/src/utils/licensePresentation.ts +++ b/frontend-modern/src/utils/licensePresentation.ts @@ -803,7 +803,7 @@ export const getLicenseStatusLoadingState = (): LicenseLoadingStateCopy => ({ }); export const getNoActiveSelfHostedActivationState = (): LicenseLoadingStateCopy => ({ - text: 'No paid self-hosted activation is active on this instance.', + text: 'No activation key is active on this instance.', }); export const SELF_HOSTED_RECOVERY_PRESENTATION: SelfHostedRecoveryPresentation = {