From 898ea7da26eaffff38f6d54c5021ee5f2576ceba Mon Sep 17 00:00:00 2001 From: rcourtman Date: Mon, 23 Mar 2026 16:42:54 +0000 Subject: [PATCH] Remove pricing counted-unit note --- .../v6/internal/subsystems/cloud-paid.md | 3 +++ frontend-modern/src/pages/PricingV6.tsx | 10 ---------- .../src/pages/__tests__/PricingV6.test.tsx | 14 +++----------- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/docs/release-control/v6/internal/subsystems/cloud-paid.md b/docs/release-control/v6/internal/subsystems/cloud-paid.md index d42b0cac3..d5813a98f 100644 --- a/docs/release-control/v6/internal/subsystems/cloud-paid.md +++ b/docs/release-control/v6/internal/subsystems/cloud-paid.md @@ -316,6 +316,9 @@ That same counted-unit boundary also owns the disclosure rule for retail copy: default billing and pricing surfaces should use concise monitored-system copy, while the full counted-unit definition appears only behind explicit disclosure such as `What counts?` instead of sitting as always-visible explanatory chrome. +The self-hosted pricing page should therefore stay focused on plan cards, +upgrade paths, and the comparison table rather than rendering a separate +counted-unit explainer card beneath the tier grid. That contract applies to both plan summary labels and upgrade/paywall copy: current v6 self-hosted pricing may not drift back to the older `$49/yr Relay`, `$99/yr Pro`, or monitored-system-count marketing drift that contradicts the diff --git a/frontend-modern/src/pages/PricingV6.tsx b/frontend-modern/src/pages/PricingV6.tsx index b58d2cc5c..ca1d05d70 100644 --- a/frontend-modern/src/pages/PricingV6.tsx +++ b/frontend-modern/src/pages/PricingV6.tsx @@ -21,12 +21,10 @@ import { logger } from '@/utils/logger'; import { SELF_HOSTED_FEATURE_ROWS, SELF_HOSTED_PLAN_BY_TIER, - SELF_HOSTED_MONITORED_SYSTEMS_BRIEF, type SelfHostedFeatureRow, type SelfHostedPlanDefinition, type SelfHostedTierKey, } from '@/utils/selfHostedPlans'; -import { MonitoredSystemDefinitionDisclosure } from '@/components/Commercial/MonitoredSystemDefinitionDisclosure'; // --------------------------------------------------------------------------- // Shared sub-components @@ -341,14 +339,6 @@ export default function PricingV6() { - - - - {/* Upsell links */}
diff --git a/frontend-modern/src/pages/__tests__/PricingV6.test.tsx b/frontend-modern/src/pages/__tests__/PricingV6.test.tsx index 48603f806..631e6d296 100644 --- a/frontend-modern/src/pages/__tests__/PricingV6.test.tsx +++ b/frontend-modern/src/pages/__tests__/PricingV6.test.tsx @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from 'vitest'; -import { fireEvent, render, screen } from '@solidjs/testing-library'; +import { render, screen } from '@solidjs/testing-library'; import type { JSX } from 'solid-js'; import PricingV6 from '../PricingV6'; @@ -66,17 +66,9 @@ describe('PricingV6', () => { expect(screen.getByText('50 monitored systems')).toBeInTheDocument(); expect(screen.getByText('Feature Comparison')).toBeInTheDocument(); expect( - screen.getByText('Billing is based on monitored systems. Child resources are included.'), - ).toBeInTheDocument(); - expect( - screen.queryByText(/a monitored system is a top-level machine or cluster/i), + screen.queryByText('Billing is based on monitored systems. Child resources are included.'), ).not.toBeInTheDocument(); - - fireEvent.click(screen.getByRole('button', { name: 'What counts?' })); - - expect( - screen.getByText(/a monitored system is a top-level machine or cluster/i), - ).toBeInTheDocument(); + expect(screen.queryByRole('button', { name: 'What counts?' })).not.toBeInTheDocument(); }); it('imports the shared self-hosted pricing model instead of redefining it locally', () => {