fix(web): graph view is silently blank when WebGL is unavailable — no fallback or message #75
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
When WebGL is unavailable in the browser,
/_graphand the floating graph widget render a completely blank panel — no nodes, no error message, no fallback. The zoom/labels/find controls still render next to the empty canvas, which makes the page look broken rather than degraded.Found during UAT of v0.9.3 (
zetl serveon the bundled demo-vault).Reproduction
cd demo-vault && zetl serve --port 3777http://localhost:3777/_graphin a browser without WebGL. Easiest repro: Playwright/Chrome headless-shell with GPU disabled, or any environment wheredocument.createElement('canvas').getContext('webgl')returnsnull(remote desktops, hardened browsers, some VMs).Diagnosis
sigma.min.jsprobes WebGL at script-evaluation time and throws before defining the global:graph-boot.jshas no guard fortypeof Sigma === 'undefined'and no WebGL capability check, so__zetlBootGraphsilently does nothing. The<noscript>fallback and thedetails.zetl-graph-fallback-listpage list exist, but neither is shown in the JS-enabled/no-WebGL case.Verified the graph renders correctly (7 sigma canvases, labels, folder legend) in the same build once WebGL is available (
--use-angle=swiftshaderor headed Chrome), so this is purely the degradation path.Expected
When WebGL is unavailable, show the existing keyboard-accessible page-list fallback (or at minimum a "Graph view requires WebGL" note), on both
/_graphand the widget.Environment
zetl serve, demo-vaultgetContext('webgl')→null