feat(ui): replace D3+Dagre attack path graph with React Flow#10686
Open
pfe-nazaries wants to merge 21 commits intomasterfrom
Open
feat(ui): replace D3+Dagre attack path graph with React Flow#10686pfe-nazaries wants to merge 21 commits intomasterfrom
pfe-nazaries wants to merge 21 commits intomasterfrom
Conversation
Contributor
|
✅ All necessary |
Contributor
|
✅ Conflict Markers Resolved All conflict markers have been successfully resolved in this pull request. |
Contributor
🔒 Container Security ScanImage: 📊 Vulnerability Summary
5 package(s) affected
|
This was referenced Apr 15, 2026
Contributor
🔒 Container Security ScanImage: 📊 Vulnerability Summary
2 package(s) affected
|
12 tasks
| event.waitUntil(self.clients.claim()) | ||
| }) | ||
|
|
||
| addEventListener('message', async function (event) { |
12 tasks
This was referenced May 5, 2026
alejandrobailo
requested changes
May 7, 2026
Contributor
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>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…#10701) Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…0800) Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…10970) Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Detach the openspec submodule so the directory is managed as a local clone instead. /openspec/ remains in .gitignore so the cloned working tree is never tracked by this repo. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rden minimap (#11010) Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Alan Buscaglia <gentlemanprogramming@gmail.com>
Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Pablo F.G <pablo.fernandez@prowler.com> 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🚀 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.