Fix graph extraction, 2D layout, and 3D selection camera - #20
Conversation
A second OSS PR sweep (pretix, Weblate, NetBox, addons-server, and others)
showed view/form/model nodes under app/views/*.py sharing a views.* id, so
route edges were pruned and the inspector mixed apps. Name those nodes from
the Django app, treat re_path("^$") / named groups as real URLs, skip
GraphiQL and demo-app trees when detecting React, and extract django-filter
FilterSets so filterset_class reviews have a typed graph.
Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
|
Warning Review limit reached
Next review available in: 20 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (13)
ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (22)
📝 WalkthroughWalkthroughReact and Django indexing now detect relevant roots, normalize routes, and model FilterSets. The frontend adds edge-aware layouts, topology-aware graph interactions, persistent 3D camera state, updated styling, and rebuilt production assets. ChangesBackend indexing and extraction
Frontend graph visualization
Estimated code review effort: 5 (Critical) | ~120 minutes Merge Risk: ⚪ Minimal · up to The PR improves graph extraction, layout, and 3D selection behavior without any identified merge-blocking risk; it is merge-ready after normal checks and review. Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
NetBox's package.json lives in netbox-graphiql, which did not match the exact graphiql path token, so detect still treated it as the React root. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Layered layout now packs occupied columns, orders nodes by barycenter so edges line up, and clamps labels to two lines. Edge labels only appear for the selected node. Selecting a 3D node no longer rebuilds the WebGL scene, which was jumping the camera and flashing white on deselect. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Routes and reverse-URL names were stacked in one layer, so pretix-style widget graphs crowded four boxes into a single column. Management commands also fell through to the OpenAPI default layer. Put those types on the path they belong on, and insert wrap hints so long routes break at slashes. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Picking another indexed repo left the previous review graph on screen with no indication that architecture was still loading. Clear stale review data, show the progress bar and a workspace placeholder, and wait for the new graph plus git refs before rendering again. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Clearing the previous review left the Impact graph tab empty once loading finished. Switch that tab to the architecture graph so the newly fetched workspace is actually visible. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Adversarial review: DRF paths like nutrition/api/views.py still became api.*, nested (?P<slug>(?:…)) leaked a ')', barycenter mixed ranks across non-adjacent columns, and explorer picks were dropped while busy. Walk past api/viewsets/filtersets unless they are the last remaining segment, parse named groups with balanced parens, order only adjacent layers, and keep a boolean workspace-loading flag with a visible error if a switch is blocked. Co-authored-by: zord.lack.net <zord.lack.net@gmail.com>
Ran Loadpath against a second round of open-source Django(+frontend) PRs and fixed the graph/inspector issues that showed up.
PRs exercised: pretix #6474, Weblate #21050, NetBox #22928, addons-server #25298, experimenter #16799, wger #2486, treeherder #9779, tecken #3339, taiga-back #252, django-cms #8781.
What was wrong
app/views/*.py(andmodels/,forms/,tests/, …) were namespaced asviews.CartApplyVoucher. Pretix alone minted 333 colliding view ids, so route→view edges were pruned and the inspector mixed apps.re_path(r"^$")andre_path(r"^", include(...))still rendered as^$/^. Named groups like(?P<slug>…)/clone/showed as regex soup in the graph and inspector.netbox-graphiqlworkspace and Experimenter’sdemo-app/legacy-uiwon as the React root. Treeherder’s real UI isui/, not the repo root.FilterSetclasses were invisible, so wger-stylefilterset_classPRs produced a review graph of disconnected tests.Fixes
_app_from_pathwalks pastviews//models//tests//api//viewsets//filtersets/packages unless that token is the last remaining segment, sonutrition/api/views.pyisnutrition.IngredientViewSetand a rootapiapp staysapi.path(""). Named groups — including nested(?:…)— become{slug}/cloneon the node and in composed URLs.netbox-graphiql); prefer a top-levelui/folder (Treeherder).FilterSetas a form node, linkfilterset_classfrom the view, and tag the inspector with a filterset role./and., and shows edge labels only for the selected node.fitViewruns when the graph topology changes, not when a node is selected.--graph-bgso deselect no longer flashes white.After the fixes (same 10 PRs)
WidgetAPIProductList; routes{subevent}/widget/product_list; UI inspector loads facts + neighborsviews.collisionsactions.pyIngredientFilterSetand friendsui/Pretix UI after the layout and 3D camera fixes:
2D review graph columns
2D selected node with inspector
pretix_2d_layout_select_nodes.mp4
pretix_3d_select_deselect_no_jump.mp4
Workspace switch loading:
Loading pretix workspace placeholder
workspace_switch_loading.mp4
Playwright
test_ui_index_review_graph_copy_and_workspaceandtest_ui_workspace_switch_shows_loadingpass.include:modulenames on emptypath("", include(...))mounts are intentional unique labels, not leaked child URLs. Root routes named/are real index URLs.To show artifacts inline, enable in settings.
Summary by CodeRabbit
New Features
Improvements