FE-1509: Add the notebook's whole-net graph explorer - #9408
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
c71e5ae to
8982115
Compare
8982115 to
55fb649
Compare
55fb649 to
5ce2a16
Compare
5ce2a16 to
0e5ac33
Compare
b76cc7f to
1cb574e
Compare
cd09125 to
0753a66
Compare
0753a66 to
464ee85
Compare
PR SummaryLow Risk Overview Selection and navigation tie the explorer to editor selection: places/transitions get blue/orange/purple highlighting for dependencies, dependents, and bidirectional neighbours; clicking graph nodes or list rows selects the matching cell and can reveal filtered-out kinds. Optional focus mode re-layers the diagram around the selected place or transition. Layout transitions use a new Keyboard focus wraps the notebook in a horizontal Reviewed by Cursor Bugbot for commit eb454db. Bugbot is set up for automated code reviews on this repo. Configure here. |
464ee85 to
35f33ad
Compare
| minSize={MIN_LISTS_HEIGHT} | ||
| maxSize={MAX_LISTS_HEIGHT} | ||
| label="Resize the connection lists" | ||
| /> |
There was a problem hiding this comment.
Lists resize handle scrolls away
Medium Severity
The connection-lists pane is both the overflowY: auto scroller and the positioned parent of the top ResizeHandle. Absolute children of a scroll box move with the content, so a long list takes the divider off-screen and overflow can clip the handle sitting at a negative top.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 35f33ad. Configure here.
A resizable right-hand pane drawing the whole net as a layered flow graph of places and transitions, laid out from the arc structure alone. Selection highlights dependencies, dependents, and both-direction neighbours; a focus mode re-layers the graph around the selection by hop distance, animated FLIP-style by a write-only requestAnimationFrame loop that runs before paint. The explorer joins the worksheet focus flow: its connection lists are a single-column grid (one roving tab stop, remounted per selection), and a horizontal move at their edge crosses back into the cell list at its remembered row. Explorer navigation can reveal a filtered-out kind, so row focus gains a one-shot retry that runs after the reveal renders.
35f33ad to
eb454db
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
There are 2 total unresolved issues (including 1 from previous review).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit eb454db. Configure here.
| } | ||
| }; | ||
|
|
||
| frameHandle.current = requestAnimationFrame(drawFrame); |
There was a problem hiding this comment.
Graph animation flashes final layout
Medium Severity
The FLIP invert never lands before paint. useLayoutEffect exists so the first node offset and edge path can be written before the browser paints the target layout, but the first drawFrame is only scheduled with requestAnimationFrame, which runs after that paint. React has already committed nodes at their final x/y and edges at the target d, so a focus-mode toggle flashes the finished graph, then jumps back and plays the move. Because layoutNetGraph returns a new object every render and the effect depends on that object, any notebook re-render mid-flight also cancels the frame and restarts the 340ms clock, snapping edges to the target path again.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit eb454db. Configure here.


🌟 What is the purpose of this PR?
Third layer of the Notebook view stack, stacked on #9407: the whole-net graph explorer on the right of the notebook, with cycle and initial-place markers, selection highlighting, and an animated focus mode.
🔗 Related links
🔍 What does this change?
requestAnimationFrameloop interpolates node transforms and edge paths before paint, honouringprefers-reduced-motionand the animations setting.FocusStack): the cell list and the connection lists are sibling members, so ArrowLeft at the lists' edge crosses back into the cell list at its remembered row. The connection lists form a single-columnuseFocusGrid— vertical arrows walk every row across both sections, the pair is one roving tab stop — remounted per selection so the focus memory never points at a vanished row.Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
🛡 What tests cover this?
net-graph-animation.test.tscovers the interpolation and layout-signature helpers; the layered and focused layouts are covered bynet-graph-layout.test.tsin the layer below. The animation timing and hover behaviour are exercised manually.❓ How to test this?
↻badge in the list or a ringed node in the graph; the whole cycle should light up in both.📹 Demo
Screenshot pending — to be added before review.