Align Pulse Pro route header title

This commit is contained in:
rcourtman
2026-03-27 08:26:03 +00:00
parent 2935440e1e
commit 1d2c0fc104
4 changed files with 11 additions and 7 deletions
@@ -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
@@ -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
@@ -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,
);
@@ -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': {