Skip to content

Conversation

@Carreau
Copy link
Contributor

@Carreau Carreau commented Nov 26, 2025

PR Checklist:

  • note any issues closed by this PR with closing keywords
  • if you are adding a new page under docs/ or community/, you have added it to the sidebar in the corresponding _sidebar.json file
  • put any other relevant information below

Disclaimer,

This makes heavy use of LLM, as I am not ususally touching javascript, and even less dagree. I did review and modify the code a lot so it is not just ask AI and see what sticks, even though there are still likely some cleaning needing in particular WRT to using CSS instead of inline style for d3 nodes.

If that's not ok, that's fine, I'm happy to close.

There are basically 2 things here in 2 commits:

  • use dagree for interactive graph in addition, but why not in replacement of the graphviz one generated by cf script
  • While at it a second commit that fixes the graphviz SVG to be zoomable/scrollable

I just want to know if I should push this further.

Suggestion to try this on the status/migration/?name=python314t, and search for example pytorche-cpu, or lalapps

it works on much bigger graph on my machine but can take a while to render/react.

Use dagree for interactive migration graph

In addition to the normal graphviz svg
dagree is already a dependency via mermaid/docusaurus

This filter and a remove packages that are "done", and/or have no
parrent children befor showing the graph, and split it into connected
components.

The interactive graph has the following features:

  • span/zoom with mouse/trackpad
  • hover a node to dimm all nodes except direct children/parents.
  • click on a node to show only current graph and all parents (and
    their parents...)/children (and their children...), but not
    siblings.

A filter search bar to find a node easily and select it without having
to click on it.

A dropdown for the various dagree layout options I think are
un-necessary but let us explore the various dagree options.

The node color should reflect the ci status of the PR, but are not
properly clickable to open given PR, this is something I'm planning to
do if there is interest.

Note that there are some hacks as some packages are marked as "awaiting
parent", while they do not have any parent pending (like pyside2 for
314t, llvmlite for 314t also IIRC), maybe this should be fixed in the
table as well with a different label.

I'm also rendering the graph even if there is an extremely large number
of node, I think I there should be a confirmation if there is say > 1k
nodes and a confirmation, but one of my powerful machine handles things
really well so not sure.


@Carreau Carreau requested a review from a team as a code owner November 26, 2025 10:58
@netlify
Copy link

netlify bot commented Nov 26, 2025

Deploy Preview for conda-forge-previews ready!

Name Link
🔨 Latest commit c7ecb75
🔍 Latest deploy log https://app.netlify.com/projects/conda-forge-previews/deploys/692cab9c817d0b0008fe2d4a
😎 Deploy Preview https://deploy-preview-2670--conda-forge-previews.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 70
Accessibility: 96
Best Practices: 100
SEO: 89
PWA: -
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@Carreau Carreau marked this pull request as draft November 26, 2025 11:09
@Carreau
Copy link
Contributor Author

Carreau commented Nov 26, 2025

Hum, it builds locally, investigating.

@Carreau Carreau marked this pull request as ready for review November 26, 2025 11:12
In addition to the normal graphviz svg
dagree is already a dependency via mermaid/docusaurus

This filter and a remove packages that are "done", and/or have no
parrent children befor showing the graph, and split it into connected
components.

The interactive graph has the following features:
  - span/zoom with mouse/trackpad
  - hover a node to dimm all nodes except direct children/parents.
  - click on a node to show only current graph and all parents (and
    their parents...)/children (and their children...), but not
    siblings.

A filter search bar to find a node easily and select it without having
to click on it.

A dropdown for the various dagree layout options I think are
un-necessary but let us explore the various dagree options.

The node color should reflect the ci status of the PR, but are not
properly clickable to open given PR, this is something I'm planning to
do if there is interest.

Note that there are some hacks as some packages are marked as "awaiting
parent", while they do not have any parent pending (like pyside2 for
314t, llvmlite for 314t also IIRC), maybe this should be fixed in the
table as well with a different label.

I'm also rendering the graph even if there is an extremly large number
of node, I think I there should be a confirmation if there is say > 1k
nodes and a confirmation, but one of my powerful machine handles things
really well so not sure.
This reverts commit 6e65d733e71fef7ce31a55273315b5d32e6bac94.
Add several improvements to the interactive dependency graph:

- Display PR numbers as clickable links on selected nodes
- Add collapsible settings panel with gear icon for graph controls
- Implement CSS toggle switch for showing/hiding completed packages
- Add large graph warning (threshold: 1000 nodes) to prevent browser slowdown
- Improve node coloring based on migration category (bot-error, not-solvable, etc.)
- Use border highlighting instead of fill color for selected nodes
- Increase node padding for better readability

The settings panel consolidates graph direction, ranker algorithm,
alignment options, and the completed packages toggle into a
single floating panel accessed via gear icon.

Move inline styles to CSS module for better maintainability and
remove unnecessary comments from the codebase.
@Carreau
Copy link
Contributor Author

Carreau commented Nov 30, 2025

The nodes colors now properly reflect the node status, the selected node provide a link to its PR (I don't do that for all nodes as it conflicts with the ability to select a sub-graph), it shows a warning if trying to render too many nodes (1000) even if 1500 works ok on my computer. Settings are now in a panel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant