Stop stationary Node tooltips from redrawing the graph - #352
Merged
Conversation
🦋 Changeset detectedLatest commit: 3507c92 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
joesobo
marked this pull request as ready for review
August 6, 2026 17:57
joesobo
marked this pull request as draft
August 7, 2026 15:06
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.
Stop stationary Node tooltips from redrawing the graph
Trello: https://trello.com/c/qvCouwTJ
Bug boundary
A visible stationary Node tooltip owned a separate animation-frame loop. Each tick wrote React state, rebuilt graph-surface props, and requested another owned WebGPU frame after physics settled. A retained Graph View could also keep work alive while VS Code hid it because the webview document remained
visible.This change does not throttle tooltip updates and does not add broad prop-equality exceptions.
Implementation
WebviewView.onDidChangeVisibilityand editorWebviewPanel.onDidChangeViewState.Verification
Graph interactions - hover and selectionCI shard.TURBO_FORCE=true pnpm --filter @codegraphy-dev/extension typecheckpassed; the dependency build reportedCached: 0.TURBO_FORCE=true pnpm --filter @codegraphy-dev/extension run build:vscodepassed: 10/10 tasks,Cached: 0.CI follow-up
Run
31190909566, job92907168039, failed only the firstBackground Context Menuscenario. All three attempts timed out inwaitForGraphFramebefore any canvas or favorites assertion. The uploaded screenshots show the Extension Development Host on CodeGraphy'sLoading graph...screen. The Dragging, Edge Context Menu, and Favorite scenarios then passed in the same job.The same job passed at the prior PR head
0b16ed40bda5b369253fbda0b7d4932576da0f09. The review checkpoint changes do not modify extension activation, webview bootstrap, or graph-data delivery. The exact four-scenario shard also passed locally, 4/4, on VS Code 1.125.1 with software WebGPU enabled, including the first cold-start scenario. This evidence supports a cold-start readiness flake.The same run also found a branch-owned portability defect in job
92907168183: the new hidden-view proof used the macOS-onlyMeta+Shift+Eshortcut on Linux, so all three attempts left the Graph View visible. Checkpoint3507c9280now selectsMeta+Shift+Eon macOS andControl+Shift+Eelsewhere, matching the existing acceptance-test convention. The exact hover-and-selection shard passed locally, 4/4, on VS Code 1.125.1 with software WebGPU enabled.Replacement run
31192166270completed at3507c9280with all 36 CI jobs green. This includes bothGraph interactions - hover and selectionandGraph interactions - canvas basics and favorites.Visual proof
Playwright injects the green evidence panel into the live Extension Development Host for this test only. It is not shipped Extension UI. The panel reports the measured webview frame requests for the stationary tooltip and the retained host-hidden Graph View; the visible tooltip and graph are the real Extension runtime.
Work log
The first real host run showed that switching to Explorer leaves the retained webview document at
document.visibilityState === "visible". That evidence led to the Extension-owned sidebar and editor visibility signal instead of another browser visibility workaround.Before the manager supplied the bundled runtime path, I ran the exact command
brew reinstall node@22after the active Homebrew Node failed to loadlibsimdjson.29.dylib. Homebrew reinstallednode@22 22.23.2successfully. This was outside the repository task and should not have happened without approval. I did not revert it or make further machine-package changes. I logged the friction in~/.codex/PAPERCUTS.mdand used the manager-provided bundled runtime path for all remaining project commands.