You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(host-detail): live Activity tab (host-scoped feed) (Phase 2a) (#618)
frontend-host-detail v1.7.0 (AC-43). Phase 2a of the activity readability
initiative (docs/engineering/activity_readability_plan.md).
The host-detail Activity tab was a deferred stub, so the Recent-activity
card's 'View all' link dead-ended. It now mounts HostActivityTab — the
host-scoped unified feed at GET /api/v1/activity?host_id=X with cursor
pagination (useInfiniteQuery + Load more), source filter chips
(All/Monitoring/Compliance/Intelligence/Alert), and the shared ActivityRow
+ eventDisplay rendering. Activity joins Compliance/Remediation as a live
tab (removed from the TAB_BACKEND_SUBSYSTEM stub registry), mirroring the
exact precedent set when Compliance went live.
The Audit log tab stays a stub for now: audit events carry no host_id, so a
host-scoped audit view needs backend resource=host filtering (Phase 2b),
which is also where the keep-vs-drop decision for that tab is made.
Verified live: the owas-tst01 Activity tab renders the paginated feed with
working filter chips. Full frontend suite (320) + specter (111) green.
secondary="Sourced from the unified activity feed (band transitions, scan changes, intelligence diffs, alerts). The list will populate as the host accrues events."
Copy file name to clipboardExpand all lines: specs/frontend/host-detail.spec.yaml
+6-2Lines changed: 6 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
spec:
2
2
id: frontend-host-detail
3
3
title: Host Detail page layout, behavior, and empty-state contracts
4
-
version: "1.6.0"
4
+
version: "1.7.0"
5
5
status: approved
6
6
tier: 2
7
7
@@ -70,7 +70,7 @@ spec:
70
70
type: technical
71
71
enforcement: error
72
72
- id: C-04
73
-
description: 'Tabs row MUST render all 10 prototype tabs in order: Overview, Compliance, Packages, Services, Users, Network, Audit log, Activity, Remediation, Terminal. Tabs whose backend subsystem is still deferred render an empty-state stub that NAMES the subsystem. v1.3.0: Compliance is live (frontend-host-compliance-tab) and the TAB_BACKEND_SUBSYSTEM stub registry no longer carries a compliance entry; Packages / Services / Users / Network are live per frontend-host-detail-inventory-tabs'
73
+
description: 'Tabs row MUST render all 10 prototype tabs in order: Overview, Compliance, Packages, Services, Users, Network, Audit log, Activity, Remediation, Terminal. Tabs whose backend subsystem is still deferred render an empty-state stub that NAMES the subsystem. v1.3.0: Compliance is live (frontend-host-compliance-tab) and the TAB_BACKEND_SUBSYSTEM stub registry no longer carries a compliance entry; Packages / Services / Users / Network are live per frontend-host-detail-inventory-tabs. v1.7.0: Activity is live (mounts HostActivityTab, the host-scoped /api/v1/activity feed) and is likewise removed from the TAB_BACKEND_SUBSYSTEM stub registry. The Audit log tab remains a stub (host-scoped audit by resource is a follow-up)'
74
74
type: technical
75
75
enforcement: error
76
76
- id: C-05
@@ -254,3 +254,7 @@ spec:
254
254
description: 'v1.6.0 - the Connectivity card "Edit credentials" button and the EditHostModal "Manage SSH credential" link both open HostCredentialModal for the host. HostCredentialModal resolves the source and renders the four tier transitions (clone default, set different host credential, edit override via PATCH, revert override via DELETE), each invalidating ["host-credential-resolve", hostId]; mutating controls are gated on credential:write. Source-inspection of HostDetailPage.tsx, EditHostModal.tsx, and HostCredentialModal.tsx.'
255
255
priority: high
256
256
references_constraints: [C-11, C-12]
257
+
- id: AC-43
258
+
description: 'v1.7.0 source-inspection - the Activity tab mounts HostActivityTab (not TabStub): it is removed from the TAB_BACKEND_SUBSYSTEM stub registry, and the tab render switch routes activeTab === "activity" to <HostActivityTab>. HostActivityTab pages GET /api/v1/activity?host_id=X via useInfiniteQuery (cursor pagination, getNextPageParam from next_cursor), renders rows with the shared ActivityRow, exposes source filter chips (All / Monitoring / Compliance / Intelligence / Alert) that drive the source query param, shows a Load more control gated on hasNextPage, and renders loading / error+Retry / "No activity yet" empty states. The Audit log tab still renders TabStub.'
0 commit comments