fix(kubernetes): render the Helm release resource graph - #5880
Merged
norman-abramovitz merged 2 commits intoSep 3, 2026
Conversation
The graph page stayed on "Loading resources" after the socket had delivered nodes and links. The component is OnPush under zoneless change detection and wrote them into plain fields from its subscription, so the view was never marked dirty. nodes, links and layout are signals now. Two more things stood between the data and the screen once it rendered: the initial fit ran on a 10ms timer before the first layout existed and clipped the right-hand nodes, so it now fits on ngx-graph's drawComplete; and the standalone GraphComponent that ngx-graph 12 points consumers to injects a LayoutService that only its deprecated module provided, so the component provides it itself. The spec stubs ngx-graph and pushes a graph through the data service the socket writes to, asserting the element appears. It fails on plain fields.
norman-abramovitz
approved these changes
Sep 3, 2026
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.
Found while live-verifying #5878 (ngx-graph 11 to 13) on the dev stack.
The Helm release resource graph (Workloads, a release, Overview) never left
"Loading resources", on develop before the bump as well as after it. The
component is
OnPushunder zoneless change detection and wrotenodesandlinksinto plain fields from itscombineLatest(...).subscribe(...), sonothing ever marked the view dirty.
ng.getComponentshowed ten nodes on theinstance while the DOM had no
<ngx-graph>. It only painted when somethingunrelated happened to mark the view (an
| asyncemission, a click), which iswhy it looked intermittent rather than dead. Broken since the zoneless
migration (
27ef38c852, 2025-10-31).Changes:
nodes,linksandlayoutare signals; the template reads them.existed and clipped the right-hand nodes. It now fits on ngx-graph's
drawCompleteoutput, added in 12 for this purpose.NgxGraphModuleto thestandalone
GraphComponent, as ngx-graph 12's deprecation notice says to.That component injects a
LayoutServicedeclared withoutprovidedIn,which only the module provided, so the first render threw NG0201. The
build and the create-only spec were both green. The component now provides
it itself.
HelmReleaseDataService, the same servicethe release socket writes, and asserts the element appears. It stubs
ngx-graph(the real one throws NG0203 under happy-dom). Checked bothways: red on plain fields, green on signals.
fast-uribump (chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /src/frontend/packages/devkit #5879) to the Chores fragment.Verified live against the k3d test cluster's traefik release: the graph
renders within a few seconds of load, the first paint is fitted, Fit works,
node drag is disabled while background pan still works (the
enableDragrename), and clicking a Deployment node opens a populated preview panel.
make check gategreen.Two things seen along the way that are not in this PR: the dev proxy's
changeOriginmakes the backend refuse every WebSocket upgrade with 403unless it is started with
ALLOWED_ORIGINS=https://localhost:5540; and thebackend polls cluster-scoped release resources (ClusterRole,
ClusterRoleBinding, IngressClass) at a namespaced path and gets 404, so those
nodes open an empty preview panel.