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
Defer Stage 5 Three.js WebGL until the gamut viewer is shown; survive context loss with a fallback renderer
Log unexpected window destroy / Web Content process death
Hide the window until first paint; show_main_window plus dark WKWebView/NSWindow backing
Dark backgroundColor, visible: false, minimum macOS 12.0
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
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
show_main_windowplus dark WKWebView/NSWindow backingbackgroundColor,visible: false, minimum macOS 12.0Stages 1–4 stay usable without spinning up WebGL.
Test plan
iccery.logrecords window/Web Content death if it still happens