Emile Bangma
2025-07-30 efddd798e83705b0e17e074fe344b2d491051ba2
revert(graph): roll back changes due to issues with Safari (#2067)

* chore: remove unused dependency

* fix(graph): rolled back webgpu changes
3 files modified
29 ■■■■■ changed files
package-lock.json 1 ●●●● patch | view | raw | blame | history
package.json 1 ●●●● patch | view | raw | blame | history
quartz/components/scripts/graph.inline.ts 27 ●●●●● patch | view | raw | blame | history
package-lock.json
@@ -14,7 +14,6 @@
        "@myriaddreamin/rehype-typst": "^0.6.0",
        "@napi-rs/simple-git": "0.1.21",
        "@tweenjs/tween.js": "^25.0.0",
        "@webgpu/types": "^0.1.64",
        "ansi-truncate": "^1.2.0",
        "async-mutex": "^0.5.0",
        "chokidar": "^4.0.3",
package.json
@@ -40,7 +40,6 @@
    "@myriaddreamin/rehype-typst": "^0.6.0",
    "@napi-rs/simple-git": "0.1.21",
    "@tweenjs/tween.js": "^25.0.0",
    "@webgpu/types": "^0.1.64",
    "ansi-truncate": "^1.2.0",
    "async-mutex": "^0.5.0",
    "chokidar": "^4.0.3",
quartz/components/scripts/graph.inline.ts
@@ -68,30 +68,6 @@
  stop: () => void
}
// workaround for pixijs webgpu issue: https://github.com/pixijs/pixijs/issues/11389
async function determineGraphicsAPI(): Promise<"webgpu" | "webgl"> {
  const adapter = await navigator.gpu?.requestAdapter().catch(() => null)
  const device = adapter && (await adapter.requestDevice().catch(() => null))
  if (!device) {
    return "webgl"
  }
  const canvas = document.createElement("canvas")
  const gl =
    (canvas.getContext("webgl2") as WebGL2RenderingContext | null) ??
    (canvas.getContext("webgl") as WebGLRenderingContext | null)
  // we have to return webgl so pixijs automatically falls back to canvas
  if (!gl) {
    return "webgl"
  }
  const webglMaxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)
  const webgpuMaxTextures = device.limits.maxSampledTexturesPerShaderStage
  return webglMaxTextures === webgpuMaxTextures ? "webgpu" : "webgl"
}
async function renderGraph(graph: HTMLElement, fullSlug: FullSlug) {
  const slug = simplifySlug(fullSlug)
  const visited = getVisited()
@@ -373,7 +349,6 @@
  tweens.forEach((tween) => tween.stop())
  tweens.clear()
  const pixiPreference = await determineGraphicsAPI()
  const app = new Application()
  await app.init({
    width,
@@ -382,7 +357,7 @@
    autoStart: false,
    autoDensity: true,
    backgroundAlpha: 0,
    preference: pixiPreference,
    preference: "webgpu",
    resolution: window.devicePixelRatio,
    eventMode: "static",
  })