diff --git a/docs/release-control/v6/internal/subsystems/frontend-primitives.md b/docs/release-control/v6/internal/subsystems/frontend-primitives.md index 7c317a250..70439364d 100644 --- a/docs/release-control/v6/internal/subsystems/frontend-primitives.md +++ b/docs/release-control/v6/internal/subsystems/frontend-primitives.md @@ -341,7 +341,12 @@ work extends shared components instead of creating new local variants. of staying as loose filter-row children, and those controls must stay grouped when dense toolbars wrap so popovers remain viewport-safe instead of drifting off-screen from page-local flex behavior. Shared `FilterToolbarPanel` owns - default filter-popover geometry, while narrow consumers such as + default filter-popover geometry, and `FilterToolbar` owns the shared chart + visibility display action: Workloads, Storage, Infrastructure, and future + summary-bearing pages must use `ChartVisibilityToggleButton` so the + affordance exposes one `Show charts` / `Hide charts` pressed-state contract + instead of rebuilding a one-option segmented control or an in-summary + collapse chevron page by page. Narrow consumers such as `ColumnPicker` must opt into their panel width through that primitive rather than layering competing width classes page by page. 4. Add guardrail tests when a new shared pattern is introduced. diff --git a/docs/release-control/v6/internal/subsystems/performance-and-scalability.md b/docs/release-control/v6/internal/subsystems/performance-and-scalability.md index e048361e7..6a0b819cf 100644 --- a/docs/release-control/v6/internal/subsystems/performance-and-scalability.md +++ b/docs/release-control/v6/internal/subsystems/performance-and-scalability.md @@ -829,7 +829,10 @@ that clips trailing actions. The workload shell must route table display actions such as grouped/list mode and chart visibility through `PageControls.toolbarTrailing`, leaving route/filter selects as primary toolbar children so the display-action cluster wraps together with Columns/Reset across -narrow desktop widths. +narrow desktop widths. Workload chart visibility is a display preference, not +an in-summary collapse affordance: the toolbar action must expose explicit +`Show charts` / `Hide charts` pressed state, and hiding charts must remove the +summary section rather than leaving an empty collapsed summary band on screen. The Workloads-owned filter-config assembly now lives in `frontend-modern/src/components/Workloads/useWorkloadsState.ts`, so future filter runtime changes must extend through those owners instead of diff --git a/docs/release-control/v6/internal/subsystems/storage-recovery.md b/docs/release-control/v6/internal/subsystems/storage-recovery.md index d721d8424..b81dd34d4 100644 --- a/docs/release-control/v6/internal/subsystems/storage-recovery.md +++ b/docs/release-control/v6/internal/subsystems/storage-recovery.md @@ -102,7 +102,10 @@ state. by the Storage page model and exposed through the shared `PageControls` trailing action rail. Storage must keep the charts toggle, column picker, and reset affordance on that shared rail so the Workloads and Storage - filter sections collapse through the same primitive contract. + filter sections collapse through the same primitive contract. The charts + toggle must read as an explicit `Show charts` / `Hide charts` pressed + display action, and the off state must remove the summary section fully + instead of leaving a collapsed summary shell in the interface. Ceph table shells on the storage route share the same frontend-primitives table contract: `frontend-modern/src/pages/Ceph.tsx` may own Ceph-specific columns and rows, but horizontal overflow and scrollbar hiding must route diff --git a/docs/release-control/v6/internal/subsystems/unified-resources.md b/docs/release-control/v6/internal/subsystems/unified-resources.md index e19c9edab..d4bdec47c 100644 --- a/docs/release-control/v6/internal/subsystems/unified-resources.md +++ b/docs/release-control/v6/internal/subsystems/unified-resources.md @@ -365,6 +365,11 @@ AI-only summary payloads, or page-local heuristics. the row may highlight in place through the shared active-resource id; if it is off-screen, the page must offer an explicit `Jump to row` affordance rather than auto-scrolling or collapsing the table on hover. +12a. Keep infrastructure summary visibility as a page-display preference, not a + unified-resource filter. `frontend-modern/src/features/infrastructure/InfrastructurePageSurface.tsx` + may hide or restore the summary section through the shared + `ChartVisibilityToggleButton`, but that control must not mutate resource + identity, table membership, route-backed focus, or summary-hover scope. 13. Keep infrastructure cluster headers as canonical summary scope. Grouped headers in `frontend-modern/src/components/Infrastructure/UnifiedResourceHostTableCard.tsx` must publish cluster scope from the same `ResourceGroup` / unified-resource diff --git a/frontend-modern/src/components/Storage/StorageFilter.tsx b/frontend-modern/src/components/Storage/StorageFilter.tsx index 82895e5ca..53b407152 100644 --- a/frontend-modern/src/components/Storage/StorageFilter.tsx +++ b/frontend-modern/src/components/Storage/StorageFilter.tsx @@ -1,6 +1,7 @@ import { Component, For, Show, type JSX } from 'solid-js'; import { Card } from '@/components/shared/Card'; import { + ChartVisibilityToggleButton, FilterDivider, FilterSegmentedControl, LabeledFilterSelect, @@ -115,31 +116,9 @@ export const StorageFilter: Component = (props) => { }); const chartsToolbarAction = () => props.onChartsToggle ? ( -