feat(ui): add an interactive dependency map

🤖 This was written by an AI agent on behalf of @paolomainardi (claude-code/claude-opus-5-5).

Adds a Dependency map tab: an interactive WebGL graph of every package in the latest snapshot, built with the module's own code (no third-party libraries, nothing loaded from outside the site).

  • Overview: packages cluster around the Drupal projects that bring them in; packages with open findings glow in their severity colour.
  • Focus: selecting a package shows the dependency chains that bring it in, always within one lockfile, plus its details and links to its findings, the assessment dialog and its package row.
  • Needs attention: keeps only installed packages with open findings and their chains.
  • Navigation: search, collapsible projects, zoom, fit and fullscreen controls with keyboard shortcuts, and a per-snapshot layout cache.
  • Fallback: without JavaScript or WebGL2 the tab links to the Packages and Security findings tables.

Builds on !18 (merged), which should be merged first.

Validated on a 4,500-package site and a synthetic 5,000-package graph.

Follow-up to #3629895

Merge request reports

Loading
Loading