mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-24 12:42:49 +00:00
ce338b1496
## Why `useWorkloadsState` defaulted `groupNodeDrawerMode` to `'inline'`, and only that mode wired group-header hover preview, click-to-pin group scope and an inline `NodeDrawer` under the group row. The only page that used the default, the standalone `/workloads` page, was retired in May. Both production mounts have passed `'disabled'` since host drawers moved to each page's own hosts table: Proxmox in84f627e22a(2026-05-18, "Move Proxmox host drawers to the host table") and vSphere ind96d5612fd(2026-05-23). The disabling was deliberate on both pages, so this removes the dead path instead of re-enabling it. The demand ledger has no entry asking for workload group hover or pin. The only way left to reach the group pin was a hand-typed `?summaryGroup=` URL. No link builder passes it, and row expansion stopped writing it in86ac84f68e. ## What changes - `WorkloadPanel`: drops the inline `NodeDrawer` mount, the group hover and pin handlers, `aria-expanded`, `data-summary-group-series-count`, `data-summary-row-active` on group rows, and the group-member state passed to `GuestRow`. Group rows stay identity-only dividers and keep `data-summary-group-id`, so clicking one still leaves an open guest drawer alone (`summaryTableFocus` ignores that selector). - `useWorkloadSelectionState`: drops the hovered and focused group scope, `summaryGroup` hydration and the related effects. It no longer passes group options to the shared bridge; Storage still uses them. - `useWorkloadsState`: drops the option, `getNodeTemperatureThresholds` (it only fed the removed drawer), and the `summaryGroupScopes` memo, which rebuilt a scope for every group on every filtered-guest change. - Removes `buildWorkloadSummaryGroupScope(Map)`, `workloadsHasVisibleWorkloadGroupScope`, the `GuestRow` group-member attribute and the workloads `summaryGroup` route param. - Proxmox and vSphere stop passing the option. Their filter bars' pinned-selection state now reads only the selected guest. - `NodeDrawer` stays live in `ProxmoxNodesTable`. The temperature guardrail now pins that live mount instead of the dead one. - Contracts: rule 8 and the Workloads, Proxmox and vSphere clauses now describe static dividers. Stale sentences about grouped node rows opening the node drawer, group-row emphasis, and Workloads selection writing back to the route are corrected. ## Verification - Before/after browser pass on pulse-dev: embedded builds on mock demo stacks, Proxmox and vSphere overviews, at 1440x900 and 390x844. - Hover, click and tap on group dividers do nothing on both builds. - Guest drawer, Escape, guest-row hover emphasis, `?resource=` links and the Proxmox nodes-table `NodeDrawer` behave the same on both builds. - Clicking a divider with a guest drawer open keeps the drawer: 10/10 on each build. - The hand-typed `?summaryGroup=` URL pinned 18 Proxmox rows on main and pins none now. - Receipt: `frontend-modern/browser-verification/db4ee39cb5db006c.json`. - Frontend typecheck passes. The targeted suites (Workloads, proxmox, vmware, platformPage, shared, routing, utils, hooks, Storage) pass on pulse-dev except one Proxmox backups windowing test that failed once at load ~40 and then passed 2/2 alone. - A full-suite run on the earlier base passed except files that also fail on unmodified main or only under load. `useReportingPanelState` fails on main there too. - Commit hook battery and governance audits pass. - Two rounds of second-opinion review. Round 1 caught a stale test pin and stale perf-contract prose; round 2 caught one inaccurate scroll-restore sentence. All are fixed here. Follow-ups raised separately: the built-in `WorkloadsSurface` filter toolbar is also unreachable, since both mounts pass `suppressFilterToolbar`. The quarantined E2E spec 48 still targets the retired `/workloads` page.