diff --git a/docs/release-control/v6/internal/subsystems/cloud-paid.md b/docs/release-control/v6/internal/subsystems/cloud-paid.md index 9c11673edd..18d67bbd8a 100644 --- a/docs/release-control/v6/internal/subsystems/cloud-paid.md +++ b/docs/release-control/v6/internal/subsystems/cloud-paid.md @@ -485,9 +485,9 @@ That same boundary also owns the shell and section framing copy for the self-hosted Pro billing surface. `ProLicensePanel.tsx` must consume shared presentation for its shell title/description, refresh CTA label, and section headings rather than carrying those commercial labels inline. -The same description should also feed the `system-billing` route header -metadata so the settings shell and the route header do not narrate the same -commercial surface differently. +The same title and description should also feed the `system-billing` route +header metadata so the settings shell and the route header do not narrate the +same commercial surface differently. Paid Pulse Pro v5 grandfathering is now part of that same canonical boundary: when a recurring v5 customer migrates into v6, billing persistence, entitlement evaluation, renewal handling, and Pro-license presentation must diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md index 8e323dca2f..8d702d8fc6 100644 --- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md +++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md @@ -157,7 +157,7 @@ work extends shared components instead of creating new local variants. 5. When a settings route header and a top-level settings shell describe the same commercial surface, keep them on the same shared presentation owner instead of allowing route metadata in `settingsHeaderMeta.ts` to drift into - independent copy. + independent title or description copy. ## Current State @@ -1250,7 +1250,8 @@ same shell boundary as `frontend-modern/src/components/Settings/ProLicensePanel.tsx` and the shared commercial presentation owner in `frontend-modern/src/utils/licensePresentation.ts`; the `system-billing` -header description must reuse +header title and description must reuse +`SELF_HOSTED_PRO_BILLING_PRESENTATION.shellTitle` and `SELF_HOSTED_PRO_BILLING_PRESENTATION.shellDescription` so the route header and the billing shell do not narrate the same commercial surface differently. `frontend-modern/src/components/Settings/NetworkSettingsPanel.tsx` is now a diff --git a/frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts b/frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts index ddd5d9e304..fa5ffdd2fb 100644 --- a/frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts +++ b/frontend-modern/src/components/Settings/__tests__/settingsArchitecture.test.ts @@ -337,7 +337,7 @@ const canonicalShellTitleExpectations = [ }, { tab: 'system-billing', - title: 'Pulse Pro', + title: SELF_HOSTED_PRO_BILLING_PRESENTATION.shellTitle, source: proLicensePanelSource, }, { @@ -1272,6 +1272,9 @@ describe('Settings architecture guardrails', () => { expect(SETTINGS_HEADER_META['infrastructure-operations'].description).not.toContain( 'installed-agent', ); + expect(SETTINGS_HEADER_META['system-billing'].title).toBe( + SELF_HOSTED_PRO_BILLING_PRESENTATION.shellTitle, + ); expect(SETTINGS_HEADER_META['system-billing'].description).toBe( SELF_HOSTED_PRO_BILLING_PRESENTATION.shellDescription, ); diff --git a/frontend-modern/src/components/Settings/settingsHeaderMeta.ts b/frontend-modern/src/components/Settings/settingsHeaderMeta.ts index 3630af2dca..bbfb0bf4a7 100644 --- a/frontend-modern/src/components/Settings/settingsHeaderMeta.ts +++ b/frontend-modern/src/components/Settings/settingsHeaderMeta.ts @@ -38,7 +38,7 @@ export const SETTINGS_HEADER_META: SettingsHeaderMetaMap = { 'Configure Pulse relay connectivity for secure remote access (mobile rollout coming soon).', }, 'system-billing': { - title: 'Pulse Pro', + title: SELF_HOSTED_PRO_BILLING_PRESENTATION.shellTitle, description: SELF_HOSTED_PRO_BILLING_PRESENTATION.shellDescription, }, 'organization-overview': {