feat(ui): replace D3+Dagre attack path graph with React Flow#10686
Conversation
|
✅ All necessary |
|
✅ Conflict Markers Resolved All conflict markers have been successfully resolved in this pull request. |
🔒 Container Security ScanImage: 📊 Vulnerability Summary
5 package(s) affected
|
🔒 Container Security ScanImage: 📊 Vulnerability Summary
2 package(s) affected
|
alejandrobailo
left a comment
There was a problem hiding this comment.
Please remove "Attack Paths" as title from the view, as the breadcrumb already mention it.
Adds the openspec repository as a submodule at openspec/ for shared spec definitions used by SDD tooling across AI coding assistants. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…spec updates Bumps the openspec submodule to incorporate the linearized task completion status and spec updates from PR0 (1373), PR1 (1374), and PR2 (1375). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ddee0ef to
c175da6
Compare
- Remove the duplicated resource-click helper from the harness - Fix graph formatting required by UI lint hooks - Restore typecheck and build validation for attack paths
Alan-TheGentleman
left a comment
There was a problem hiding this comment.
CI is green and the CodeQL/MSW thread has been resolved.
- Render graph export from data-driven canvas - Preserve visible graph state and finding markers - Add export regression coverage
Alan-TheGentleman
left a comment
There was a problem hiding this comment.
Approved after addressing the requested changes and validating the latest export fix.
- Resolve UI dependency metadata conflicts - Preserve React Flow migration dependencies - Include latest master updates before merge
df70754
73002f5
🚀 Feature Complete - Chained PRs
This PR merges the
PROWLER-1273/react-flow-migrationfeature branch.Included PRs
Legend: 🟢 Merged | 🟡 Open | 🔴 Changes Requested | 🔵 In Progress | ⚪ Pending
MVP milestone: After PR2, the graph is fully functional except export.
Phase 1 complete: After PR3.
Hardening complete: After PR4 (automated test coverage).
Polish complete: After PR5 (viewport and minimap fixes).
Visual UX complete: After PR9 (semantic node visuals, icons, and dynamic legend).
Interaction hardening complete: After PR11 (dynamic findings, graph hardening, and simplified click model).
Dependency Diagram
Context
The Attack Path graph was an imperative D3 component that bypassed React reconciliation. This feature branch migrates it to React Flow (
@xyflow/reactv12), the de-facto standard for graph visualization in React, then incrementally hardens the experience through reviewable chained PRs.The migration is Phase 1 of the RFC: drop-in replacement achieving feature parity plus minimap, export, automated browser coverage, viewport hardening, semantic node visuals, and a simplified graph interaction model. Phase 2 (edge labels, node grouping, multi-select) will follow in a separate initiative.
Technical design:
openspec/changes/react-flow-migration/contains the full proposal, design, specs, and task breakdown.Description
Key Changes:
Rendering
@dagrejs/dagre(maintained fork)Interactions
Export
modern-screenshot+ React Flow's viewport helpersCleanup
dagrepackage (keepd3— used by geo map components)Testing
AttackPathPageHarnessfor page-level flowsSteps to review
pnpm test:browserinui/— verify the page-level suite passesChecklist
Community Checklist
UI
License
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.