Files
qtalker---/frontend
Indiana b2b0dc319a fix: no WebGL took down the entire app, not just the ghost
Found by actually looking at the deployed site instead of trusting the test
suite. Rendered /seance in a browser with no GPU and got a completely blank
page — `#root` with ZERO children, console reading "THREE.WebGLRenderer:
Error creating WebGL context". Not a missing apparition: no modes, no ask
field, no transcript, nothing. Desktop and mobile alike.

Cause: `new GhostScene()` constructs a THREE.WebGLRenderer, which throws when
a context cannot be created. The exception escaped its effect, and with no
error boundary above it React unmounted the whole root.

The apparition is atmosphere and must never be able to do that. It is now
constructed inside a try/catch that degrades to a quiet violet glow in the
same palette, so the stage reads as occupied rather than broken, and the
séance carries on completely.

This is not exotic. Any device with a blocklisted GPU, hardware acceleration
switched off, or a driver too old for the browser hits exactly this path —
and the failure mode was the worst available: a blank page with no
explanation.

Proven end to end, not just in tests: same browser, same URL, before the fix
`rootChildren: 0` and an uncaught error; after it `rootChildren: 4`, zero
uncaught errors, and the body reading WIRE GHOST / EVP / SPIRIT RADIO /
OUIJA / FIELD / LENS. The screenshots confirm the phone shell and the
untouched desktop layout both render.

432 tests (3 new, which fail without the guard).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 03:11:02 +00:00
..