mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-22 19:23:31 +00:00
65b069dbba
v5 platform/dashboard pages had a dense filter card with search, status chips, view-mode toggle, grouping toggle, column picker, and sort controls (DashboardFilter.tsx, DockerFilter.tsx, StorageFilter.tsx). v6 platform pages mounted WorkloadsSurface and StorageSurface in `embedded tableOnly` mode, which hid the entire canonical filter toolbar alongside the dashboard cards — so /docker/containers, /kubernetes/pods, /truenas/storage, /truenas/apps, /vmware/vms, and /vmware/storage shipped without search, status, grouping, or column controls. Operators had no way to filter inside a platform page short of navigating to the global Workloads/Storage page. Bridge those v5 affordances onto the v6 platform pages by extending the canonical surface contracts: - WorkloadsSurfaceProps gains `showFilterToolbar` and `suppressPlatformFilter`. `showFilterToolbar` keeps the canonical WorkloadsFilter (search input + status chips + view-mode segmented control + grouping toggle + ColumnPicker + sort handles) visible even under `tableOnly`. `suppressPlatformFilter` drops the redundant Platform chip since the platform is already fixed by the owning page, so the user never sees a removable lock. - StorageProps gains `showFilterToolbar`. Same idea for the canonical StoragePageControls (search + status + group-by + sort + node filter + view). Platform pages now mount their embedded surfaces with `tableOnly + showFilterToolbar` (plus `suppressPlatformFilter` for WorkloadsSurface): - Docker > Containers - Kubernetes > Pods - TrueNAS > Storage, Apps - vSphere > VMs, Storage UnifiedResourceTable-backed sub-tabs (Docker Hosts, K8s Clusters/ Nodes/Deployments, vSphere Hosts) still rely on the table's built-in sort handles only; a follow-up shared `PlatformInfraControls` row with search + counters is the next operator-controls bridge. Browser verification (Playwright, chromium, against live mock-mode Pulse dev runtime): - 9 tests, all pass. New assertion confirms that every embedded Workloads/Storage sub-tab on a platform page now renders the canonical search input (proving the v5-style operator toolbar is back). Targeted vitest: - WorkloadsSurface.performance.contract.test.tsx adds a platform-page embed contract assertion (37 tests total, all pass). - Storage.test.tsx adds the matching StorageProps assertion (39 tests total, all pass). Contracts updated: - performance-and-scalability.md Shared Boundaries: documents the `showFilterToolbar` + `suppressPlatformFilter` platform-page contract on WorkloadsSurface. - storage-recovery.md Shared Boundaries: documents the `showFilterToolbar` platform-page contract on StorageSurface.