fix(macos): stop Monterey WKWebView flash-loop (#225) #226

Merged
gronod merged 5 commits from fix/225-monterey-webview into development 2026-09-07 17:40:42 +01:00
Owner

Fixes #225.

Stops the Intel Monterey crash loop: white WKWebView flash, silent Stage 5 WebGL GPU-helper death, and the window vanishing after a few cycles with no useful log.

Five commits kept separate so Monterey can be bisected.

Changes

  1. Defer Stage 5 Three.js WebGL until the gamut viewer is shown; survive context loss with a fallback renderer
  2. Log unexpected window destroy / Web Content process death
  3. Hide the window until first paint; show_main_window plus dark WKWebView/NSWindow backing
  4. Dark backgroundColor, visible: false, minimum macOS 12.0
  5. Support matrix, log path, and Monterey troubleshooting in the docs

Stages 1–4 stay usable without spinning up WebGL.

Test plan

  • Cold launch on Intel Monterey: dark window, no white flash loop
  • Stages 1–4 work without Stage 5 GPU init
  • Stage 5 gamut viewer starts only when that stage is shown
  • iccery.log records window/Web Content death if it still happens
Fixes #225. Stops the Intel Monterey crash loop: white WKWebView flash, silent Stage 5 WebGL GPU-helper death, and the window vanishing after a few cycles with no useful log. Five commits kept separate so Monterey can be bisected. ## Changes 1. Defer Stage 5 Three.js WebGL until the gamut viewer is shown; survive context loss with a fallback renderer 2. Log unexpected window destroy / Web Content process death 3. Hide the window until first paint; `show_main_window` plus dark WKWebView/NSWindow backing 4. Dark `backgroundColor`, `visible: false`, minimum macOS 12.0 5. Support matrix, log path, and Monterey troubleshooting in the docs Stages 1–4 stay usable without spinning up WebGL. ## Test plan - [ ] Cold launch on Intel Monterey: dark window, no white flash loop - [ ] Stages 1–4 work without Stage 5 GPU init - [ ] Stage 5 gamut viewer starts only when that stage is shown - [ ] `iccery.log` records window/Web Content death if it still happens
gronod added 5 commits 2026-09-07 17:40:39 +01:00
Eager THREE.WebGLRenderer + rAF during DOMContentLoaded respawns
WKWebView on Monterey Intel. Create the context only when Stage 5
is shown, feature-detect WebGL, pause the loop when hidden, and
leave a fallback UI if the GPU context is missing or lost.
Helper-process crashes do not produce an ICCery Crash Reporter
dialog. Record CloseRequested vs unexpected Destroyed, and detect
wry 'web content process terminated' strings for iccery.log.
Keep the window hidden until the frontend signals first paint,
re-apply #1A1A22 NSWindow/WKWebView backing (drawsBackground=NO),
and expose os/arch/macos version for the Intel Monterey notice.
visible:false avoids the first white WKWebView frame. backgroundColor
matches the dark theme. LSMinimumSystemVersion 12.0 stops Catalina
and Big Sur installing a binary that flash-loops.
docs(macos): support matrix, log path, and Monterey troubleshooting (#225)
Build Windows Packages / Build Windows (push) Canceled after 25s
Build Linux Packages / Build Linux (push) Canceled after 27s
Build macOS Packages / Build macOS (Apple Silicon) (push) Successful in 10m39s
Build macOS Packages / Build macOS (Intel) (push) Successful in 10m50s
87e8e65771
Document the 12.0+ policy, WebGL best-effort on Monterey Intel,
iccery.log location, and DiagnosticReports WebKit helpers.
gronod merged commit a147064722 into development 2026-09-07 17:40:42 +01:00
gronod deleted branch fix/225-monterey-webview 2026-09-07 17:40:42 +01:00
Sign in to join this conversation.