THEORY: WKWebView at frame .zero or detached from window skips GPU compositor init. First real display triggers GPU process launch (~3s). FIX: Create WKWebView at screen bounds, attach to key window (alpha=0) during warmup. WebKit launches GPU process while user is on Home tab. Remove from window after 2s (GPU process stays alive). Also: ensureAttachedToWindow() fallback if init runs before window exists. Called from ContentView.task where window is guaranteed. Added 1x1 transparent GIF in warmup HTML to force image decoder init. Kept all debug logging for verification. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>