mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-23 12:15:42 +00:00
Retire platform table frame allowlist
This commit is contained in:
@@ -2375,15 +2375,13 @@ primitive.
|
||||
Platform table frames are one of those registry-backed templates.
|
||||
`frontend-modern/src/features/platformPage/sharedPlatformPage.tsx` owns
|
||||
`PlatformTableShell`, including the canonical table card, header row, and body
|
||||
divide styling. New platform tables must start from `PlatformTableShell`; the
|
||||
legacy table-frame allowlist in `shared-template-registry.json` is migration
|
||||
debt, not precedent, and must shrink as existing tables are moved onto the
|
||||
shared shell.
|
||||
Host overview tables for Docker, Kubernetes, Proxmox, and vSphere now compose
|
||||
that shared shell directly. Future host overview tables must preserve the split:
|
||||
divide styling. Platform table frames now have no local-frame exceptions in
|
||||
`shared-template-registry.json`: new and existing platform tables must compose
|
||||
`PlatformTableShell` instead of recreating the `TableCard`, header row, or body
|
||||
divide frame locally. Platform table consumers must preserve the owner split:
|
||||
frontend-primitives owns the repeated `PlatformTableShell` frame and guardrail
|
||||
registry, while unified-resource consumers own the platform-specific row fields,
|
||||
drawers, and resource semantics.
|
||||
registry, while platform and unified-resource consumers own the source-specific
|
||||
row fields, drawers, and resource semantics.
|
||||
The shared help icon now follows that same owner split.
|
||||
`frontend-modern/src/components/shared/HelpIcon.tsx` stays the render shell,
|
||||
`frontend-modern/src/components/shared/useHelpIconState.ts` owns open state,
|
||||
|
||||
@@ -353,6 +353,22 @@
|
||||
"security-privacy"
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "frontend-modern/src/features/proxmox/ProxmoxBackupServersTable.tsx",
|
||||
"subsystems": [
|
||||
"storage-recovery",
|
||||
"unified-resources"
|
||||
],
|
||||
"rationale": "Proxmox backup server table rows are both a storage/recovery backup-health surface and a unified-resource platform-table consumer boundary"
|
||||
},
|
||||
{
|
||||
"path": "frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx",
|
||||
"subsystems": [
|
||||
"storage-recovery",
|
||||
"unified-resources"
|
||||
],
|
||||
"rationale": "Proxmox recoverable workload table rows are both a storage/recovery coverage surface and a unified-resource platform-table consumer boundary"
|
||||
},
|
||||
{
|
||||
"path": "frontend-modern/src/routing/routePreload.ts",
|
||||
"rationale": "the app-shell route preload registry is both a canonical frontend shell boundary and an authenticated hot-path performance boundary",
|
||||
@@ -5148,6 +5164,7 @@
|
||||
"frontend-modern/src/components/Infrastructure/useUnifiedResourceTableViewportSync.ts",
|
||||
"frontend-modern/src/components/Kubernetes/K8sDeploymentsDrawer.tsx",
|
||||
"frontend-modern/src/components/Kubernetes/K8sNamespacesDrawer.tsx",
|
||||
"frontend-modern/src/features/docker/DockerAlertsTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerConfigsTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerContainersTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerHostsTable.tsx",
|
||||
@@ -5157,9 +5174,12 @@
|
||||
"frontend-modern/src/features/docker/dockerPageModel.ts",
|
||||
"frontend-modern/src/features/docker/DockerPageSurface.tsx",
|
||||
"frontend-modern/src/features/docker/DockerSecretsTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerServicesTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerStorageUsageTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerSwarmNodesTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerTasksTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerVolumesTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesAlertsTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesAutoscalingTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesClustersTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesConfigTable.tsx",
|
||||
@@ -5174,8 +5194,28 @@
|
||||
"frontend-modern/src/features/kubernetes/KubernetesPolicyTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesServicesTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesStorageTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxBackupServersTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxCephTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxCoverageTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxMailGatewayTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxNodesTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxReplicationTable.tsx",
|
||||
"frontend-modern/src/features/standalone/AgentsMachinesTable.tsx",
|
||||
"frontend-modern/src/features/standalone/AvailabilityChecksTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASAlertsTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASAppsTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASNetworkSharesTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASProtectionTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASServicesTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASStorageTopologyTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASSystemsTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASVirtualMachinesTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereActivityTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereAlertsTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereDatastoresTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereHostsTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereNetworksTable.tsx",
|
||||
"frontend-modern/src/hooks/useUnifiedResources.ts",
|
||||
"frontend-modern/src/routing/resourceLinks.ts",
|
||||
"frontend-modern/src/types/resource.ts",
|
||||
@@ -5290,6 +5330,7 @@
|
||||
"frontend-modern/src/components/Infrastructure/useUnifiedResourceTableViewportSync.ts",
|
||||
"frontend-modern/src/components/Kubernetes/K8sDeploymentsDrawer.tsx",
|
||||
"frontend-modern/src/components/Kubernetes/K8sNamespacesDrawer.tsx",
|
||||
"frontend-modern/src/features/docker/DockerAlertsTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerConfigsTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerContainersTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerHostsTable.tsx",
|
||||
@@ -5299,9 +5340,12 @@
|
||||
"frontend-modern/src/features/docker/dockerPageModel.ts",
|
||||
"frontend-modern/src/features/docker/DockerPageSurface.tsx",
|
||||
"frontend-modern/src/features/docker/DockerSecretsTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerServicesTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerStorageUsageTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerSwarmNodesTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerTasksTable.tsx",
|
||||
"frontend-modern/src/features/docker/DockerVolumesTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesAlertsTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesAutoscalingTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesClustersTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesConfigTable.tsx",
|
||||
@@ -5316,8 +5360,28 @@
|
||||
"frontend-modern/src/features/kubernetes/KubernetesPolicyTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesServicesTable.tsx",
|
||||
"frontend-modern/src/features/kubernetes/KubernetesStorageTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxBackupServersTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxCephTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxCoverageTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxMailGatewayTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxNodesTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx",
|
||||
"frontend-modern/src/features/proxmox/ProxmoxReplicationTable.tsx",
|
||||
"frontend-modern/src/features/standalone/AgentsMachinesTable.tsx",
|
||||
"frontend-modern/src/features/standalone/AvailabilityChecksTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASAlertsTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASAppsTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASNetworkSharesTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASProtectionTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASServicesTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASStorageTopologyTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASSystemsTable.tsx",
|
||||
"frontend-modern/src/features/truenas/TrueNASVirtualMachinesTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereActivityTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereAlertsTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereDatastoresTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereHostsTable.tsx",
|
||||
"frontend-modern/src/features/vmware/VsphereNetworksTable.tsx",
|
||||
"frontend-modern/src/hooks/useUnifiedResources.ts",
|
||||
"frontend-modern/src/routing/resourceLinks.ts",
|
||||
"frontend-modern/src/types/resource.ts",
|
||||
@@ -5340,6 +5404,7 @@
|
||||
"frontend-modern/src/components/Infrastructure/__tests__/UnifiedResourceTable.workloads-link.test.tsx",
|
||||
"frontend-modern/src/components/Infrastructure/__tests__/unifiedResourceTableStateModel.test.ts",
|
||||
"frontend-modern/src/components/shared/SharedPrimitives.guardrails.test.ts",
|
||||
"frontend-modern/src/features/docker/__tests__/DockerAlertsTable.test.tsx",
|
||||
"frontend-modern/src/features/docker/__tests__/DockerHostsTable.test.tsx",
|
||||
"frontend-modern/src/features/docker/__tests__/DockerNativeTables.test.tsx",
|
||||
"frontend-modern/src/features/docker/__tests__/dockerPageModel.test.ts",
|
||||
@@ -5356,8 +5421,24 @@
|
||||
"frontend-modern/src/features/kubernetes/__tests__/KubernetesPolicyTable.test.tsx",
|
||||
"frontend-modern/src/features/kubernetes/__tests__/KubernetesServicesTable.test.tsx",
|
||||
"frontend-modern/src/features/kubernetes/__tests__/KubernetesStorageTable.test.tsx",
|
||||
"frontend-modern/src/features/platformPage/__tests__/platformOverviewLayout.guardrails.test.ts",
|
||||
"frontend-modern/src/features/proxmox/__tests__/ProxmoxBackupServersTable.test.ts",
|
||||
"frontend-modern/src/features/proxmox/__tests__/ProxmoxCoverageTable.test.tsx",
|
||||
"frontend-modern/src/features/proxmox/__tests__/ProxmoxNodesTable.test.tsx",
|
||||
"frontend-modern/src/features/proxmox/__tests__/ProxmoxPageSurface.contract.test.tsx",
|
||||
"frontend-modern/src/features/standalone/__tests__/AgentsMachinesTable.test.tsx",
|
||||
"frontend-modern/src/features/standalone/__tests__/AvailabilityChecksTable.test.tsx",
|
||||
"frontend-modern/src/features/truenas/__tests__/TrueNASAlertsTable.test.tsx",
|
||||
"frontend-modern/src/features/truenas/__tests__/TrueNASPageSurface.contract.test.tsx",
|
||||
"frontend-modern/src/features/truenas/__tests__/TrueNASProtectionTable.test.tsx",
|
||||
"frontend-modern/src/features/truenas/__tests__/TrueNASServicesTable.test.tsx",
|
||||
"frontend-modern/src/features/truenas/__tests__/TrueNASStorageTopologyTable.test.tsx",
|
||||
"frontend-modern/src/features/truenas/__tests__/TrueNASSystemsTable.test.tsx",
|
||||
"frontend-modern/src/features/vmware/__tests__/VsphereActivityTable.test.tsx",
|
||||
"frontend-modern/src/features/vmware/__tests__/VsphereAlertsTable.test.tsx",
|
||||
"frontend-modern/src/features/vmware/__tests__/VsphereDatastoresTable.test.tsx",
|
||||
"frontend-modern/src/features/vmware/__tests__/VsphereHostsTable.test.tsx",
|
||||
"frontend-modern/src/features/vmware/__tests__/VsphereNetworksTable.test.tsx",
|
||||
"frontend-modern/src/hooks/__tests__/useUnifiedResources.test.ts",
|
||||
"frontend-modern/src/routing/__tests__/resourceLinks.test.ts",
|
||||
"frontend-modern/src/stores/__tests__/websocket-unified.test.ts",
|
||||
|
||||
@@ -54,8 +54,10 @@ state.
|
||||
|
||||
## Shared Boundaries
|
||||
|
||||
1. `internal/api/setup_script_render.go` shared with `agent-lifecycle`, `api-contracts`: the generated Proxmox setup-script is a shared boundary across agent lifecycle (forced-command keys, install/uninstall edits), API contracts (rendered token shape and encoded rerun URL), and storage/recovery (backup visibility grants, Pulse-managed temperature SSH keys, and SMART disk-temperature collection).
|
||||
2. `internal/proxmoxidentity/backup_identity.go` shared with `alerts`, `monitoring`: Proxmox PBS backup subject identity is a shared runtime boundary for monitoring backup freshness, backup-age alert attribution, and recovery-point guest mapping.
|
||||
1. `frontend-modern/src/features/proxmox/ProxmoxBackupServersTable.tsx` shared with `unified-resources`: Proxmox backup server table rows are both a storage/recovery backup-health surface and a unified-resource platform-table consumer boundary.
|
||||
2. `frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx` shared with `unified-resources`: Proxmox recoverable workload table rows are both a storage/recovery coverage surface and a unified-resource platform-table consumer boundary.
|
||||
3. `internal/api/setup_script_render.go` shared with `agent-lifecycle`, `api-contracts`: the generated Proxmox setup-script is a shared boundary across agent lifecycle (forced-command keys, install/uninstall edits), API contracts (rendered token shape and encoded rerun URL), and storage/recovery (backup visibility grants, Pulse-managed temperature SSH keys, and SMART disk-temperature collection).
|
||||
4. `internal/proxmoxidentity/backup_identity.go` shared with `alerts`, `monitoring`: Proxmox PBS backup subject identity is a shared runtime boundary for monitoring backup freshness, backup-age alert attribution, and recovery-point guest mapping.
|
||||
|
||||
## Extension Points
|
||||
|
||||
|
||||
@@ -132,6 +132,28 @@ cross-source deduplication.
|
||||
110. `frontend-modern/src/features/kubernetes/KubernetesPolicyTable.tsx`
|
||||
111. `frontend-modern/src/features/kubernetes/KubernetesAutoscalingTable.tsx`
|
||||
112. `frontend-modern/src/features/kubernetes/KubernetesEventsTable.tsx`
|
||||
113. `frontend-modern/src/features/docker/DockerAlertsTable.tsx`
|
||||
114. `frontend-modern/src/features/docker/DockerServicesTable.tsx`
|
||||
115. `frontend-modern/src/features/docker/DockerStorageUsageTable.tsx`
|
||||
116. `frontend-modern/src/features/kubernetes/KubernetesAlertsTable.tsx`
|
||||
117. `frontend-modern/src/features/proxmox/ProxmoxBackupServersTable.tsx`
|
||||
118. `frontend-modern/src/features/proxmox/ProxmoxCephTable.tsx`
|
||||
119. `frontend-modern/src/features/proxmox/ProxmoxCoverageTable.tsx`
|
||||
120. `frontend-modern/src/features/proxmox/ProxmoxMailGatewayTable.tsx`
|
||||
121. `frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx`
|
||||
122. `frontend-modern/src/features/proxmox/ProxmoxReplicationTable.tsx`
|
||||
123. `frontend-modern/src/features/truenas/TrueNASAlertsTable.tsx`
|
||||
124. `frontend-modern/src/features/truenas/TrueNASAppsTable.tsx`
|
||||
125. `frontend-modern/src/features/truenas/TrueNASNetworkSharesTable.tsx`
|
||||
126. `frontend-modern/src/features/truenas/TrueNASProtectionTable.tsx`
|
||||
127. `frontend-modern/src/features/truenas/TrueNASServicesTable.tsx`
|
||||
128. `frontend-modern/src/features/truenas/TrueNASStorageTopologyTable.tsx`
|
||||
129. `frontend-modern/src/features/truenas/TrueNASSystemsTable.tsx`
|
||||
130. `frontend-modern/src/features/truenas/TrueNASVirtualMachinesTable.tsx`
|
||||
131. `frontend-modern/src/features/vmware/VsphereActivityTable.tsx`
|
||||
132. `frontend-modern/src/features/vmware/VsphereAlertsTable.tsx`
|
||||
133. `frontend-modern/src/features/vmware/VsphereDatastoresTable.tsx`
|
||||
134. `frontend-modern/src/features/vmware/VsphereNetworksTable.tsx`
|
||||
|
||||
## Shared Boundaries
|
||||
|
||||
@@ -184,14 +206,14 @@ workload, service, storage, configuration, policy, and event object rows belong
|
||||
in their workflow tabs. If a future Overview repeats a detailed table, the
|
||||
owning workflow must be retired or the Overview content must be reduced to
|
||||
aggregate signal.
|
||||
Platform host overview tables are unified-resource consumers even when their
|
||||
visual table frame is frontend-primitives-owned. `DockerHostsTable.tsx`,
|
||||
`KubernetesNodesTable.tsx`, `ProxmoxNodesTable.tsx`, and
|
||||
`VsphereHostsTable.tsx` own source-specific row fields over canonical
|
||||
`Resource` projections, while `PlatformTableShell` owns the shared table card,
|
||||
header row, and body frame. Future host overview tables must keep that split:
|
||||
row data and platform semantics stay in the unified-resource consumer, and the
|
||||
repeated table shell stays in the shared frontend primitive.
|
||||
Platform native tables are unified-resource consumers even when their visual
|
||||
table frame is frontend-primitives-owned. Docker / Podman, Kubernetes, Proxmox,
|
||||
Standalone, TrueNAS, and vSphere platform tables own source-specific row fields,
|
||||
filter semantics, drawer handoffs, and resource projections, while
|
||||
`PlatformTableShell` owns the shared table card, header row, and body frame.
|
||||
Future platform tables must keep that split: row data and platform semantics
|
||||
stay in the unified-resource consumer, and the repeated table shell stays in the
|
||||
shared frontend primitive.
|
||||
Product-originated resource references may arrive as registered unified
|
||||
resource IDs, source-specific IDs, or canonical identity aliases. The
|
||||
unified-resource registry owns resolving those references through
|
||||
@@ -290,11 +312,13 @@ container inventory table.
|
||||
9. `frontend-modern/src/components/Infrastructure/unifiedResourceTableStateModel.ts` shared with `performance-and-scalability`: unified resource table state derivation, sort-cycle policy, service sorting, and responsive column layout are both a canonical unified-resource consumer surface and a fleet-scale performance hot-path boundary.
|
||||
10. `frontend-modern/src/components/Infrastructure/useUnifiedResourceTableState.ts` shared with `performance-and-scalability`: unified resource table state, grouping, and windowing are both a canonical unified-resource consumer surface and a fleet-scale performance hot-path boundary.
|
||||
11. `frontend-modern/src/components/Infrastructure/useUnifiedResourceTableViewportSync.ts` shared with `performance-and-scalability`: unified resource table viewport sync and selected-row reveal are both a canonical unified-resource consumer surface and a fleet-scale performance hot-path boundary.
|
||||
15. `frontend-modern/src/utils/platformSupportManifest.generated.ts` shared with `frontend-primitives`: the generated platform support projection is both a canonical unified-resource platform union boundary and a shared frontend source/platform vocabulary boundary.
|
||||
12. `frontend-modern/src/features/proxmox/ProxmoxBackupServersTable.tsx` shared with `storage-recovery`: Proxmox backup server table rows are both a storage/recovery backup-health surface and a unified-resource platform-table consumer boundary.
|
||||
13. `frontend-modern/src/features/proxmox/ProxmoxRecoverableTable.tsx` shared with `storage-recovery`: Proxmox recoverable workload table rows are both a storage/recovery coverage surface and a unified-resource platform-table consumer boundary.
|
||||
14. `frontend-modern/src/utils/platformSupportManifest.generated.ts` shared with `frontend-primitives`: the generated platform support projection is both a canonical unified-resource platform union boundary and a shared frontend source/platform vocabulary boundary.
|
||||
It must carry the manifest `surface_kind` distinction so `docker` remains
|
||||
machine-readable as a `runtime-lens` while owning infrastructure sources
|
||||
remain `platform` entries.
|
||||
16. `frontend-modern/src/utils/sourcePlatforms.ts` shared with `frontend-primitives`: the source platform normalizer is both a canonical unified-resource source adapter boundary and a shared frontend source/platform vocabulary boundary.
|
||||
15. `frontend-modern/src/utils/sourcePlatforms.ts` shared with `frontend-primitives`: the source platform normalizer is both a canonical unified-resource source adapter boundary and a shared frontend source/platform vocabulary boundary.
|
||||
That shared vocabulary boundary owns the generic `docker` platform label:
|
||||
selectors, badges, and filter options render it as "Docker / Podman" so
|
||||
v5 Docker users can still find the runtime surface while Podman-backed
|
||||
@@ -316,7 +340,7 @@ container inventory table.
|
||||
display/source family; `platformScopes` is the overlap set used when a
|
||||
runtime workload belongs to both Docker and an owning infrastructure
|
||||
platform.
|
||||
17. `internal/api/resources.go` shared with `api-contracts`: the unified resource endpoint is both a backend payload contract surface and a unified-resource runtime boundary.
|
||||
16. `internal/api/resources.go` shared with `api-contracts`: the unified resource endpoint is both a backend payload contract surface and a unified-resource runtime boundary.
|
||||
App-container Discovery targets are part of that shared payload contract.
|
||||
Backend resources must expose frontend-facing `resourceType=app-container`
|
||||
with the reporting Docker/Podman agent id and the stable container name as
|
||||
|
||||
Reference in New Issue
Block a user