The model selector now performs async WebGPU detection before rendering. This prevents the UI from showing the browser option when it won't actually work.
async checkWebGpu(): Promise<boolean> { if (!navigator.gpu) return false; try { const adapter = await navigator.gpu.requestAdapter(); return adapter !== null; } catch { return false; } }
If WebGPU is unavailable, the browser model option shows "WebGPU not available" and is grayed out.