diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md index b0f5f3b318..5bb29f8ce8 100644 --- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md +++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md @@ -5247,7 +5247,10 @@ Platform table title-case fallback formatting follows the same rule. `formatPlatformTableTitleCaseValue` owns the repeated trimmed-string plus `Unknown` fallback behavior for state/status labels that need simple title case. TrueNAS platform tables must compose that helper instead of declaring -local `titleCase` helpers. +local `titleCase` helpers. The apps, shares, services and VMs tables are its +required consumers. The storage table left that list when its Health cell +switched from a title-cased risk-level pill to TrueNAS's own reason text, and +the scope-wide guard against a local `titleCase` helper still covers it. Platform table compact list summaries follow the same rule. `summarizePlatformTableValues` owns the repeated trimming, empty-marker label, visible-value count, `+N` overflow suffix, full-title text, and normalized diff --git a/frontend-modern/scripts/shared-template-registry.json b/frontend-modern/scripts/shared-template-registry.json index dcfe89af0c..04ad2b7184 100644 --- a/frontend-modern/scripts/shared-template-registry.json +++ b/frontend-modern/scripts/shared-template-registry.json @@ -2304,7 +2304,6 @@ { "path": "src/features/truenas/TrueNASAppsTable.tsx" }, { "path": "src/features/truenas/TrueNASNetworkSharesTable.tsx" }, { "path": "src/features/truenas/TrueNASServicesTable.tsx" }, - { "path": "src/features/truenas/TrueNASStorageTopologyTable.tsx" }, { "path": "src/features/truenas/TrueNASVirtualMachinesTable.tsx" } ], "forbiddenPatterns": [ @@ -2320,10 +2319,6 @@ "path": "src/features/truenas/TrueNASServicesTable.tsx", "patterns": ["const titleCase"] }, - { - "path": "src/features/truenas/TrueNASStorageTopologyTable.tsx", - "patterns": ["const titleCase"] - }, { "path": "src/features/truenas/TrueNASVirtualMachinesTable.tsx", "patterns": ["const titleCase"] diff --git a/frontend-modern/src/components/shared/SharedPrimitives.guardrails.test.ts b/frontend-modern/src/components/shared/SharedPrimitives.guardrails.test.ts index ad0a58029f..1769154c13 100644 --- a/frontend-modern/src/components/shared/SharedPrimitives.guardrails.test.ts +++ b/frontend-modern/src/components/shared/SharedPrimitives.guardrails.test.ts @@ -5895,7 +5895,9 @@ describe('shared primitive guardrails', () => { ['src/features/truenas/TrueNASAppsTable.tsx', truenasAppsTableSource], ['src/features/truenas/TrueNASNetworkSharesTable.tsx', truenasNetworkSharesTableSource], ['src/features/truenas/TrueNASServicesTable.tsx', truenasServicesTableSource], - ['src/features/truenas/TrueNASStorageTopologyTable.tsx', truenasStorageTopologyTableSource], + // The storage table no longer formats a raw provider value: its Health + // cell carries TrueNAS's own reason text. The scope-wide local-helper + // guard below still keeps a private titleCase out of it. ['src/features/truenas/TrueNASVirtualMachinesTable.tsx', truenasVirtualMachinesTableSource], ]; const truenasTitleCaseConsumerPaths = truenasTitleCaseConsumers.map(([path]) => path);