updateDeviceStatus() gains a tri-state: true/false once the server has actually reported it, or null for "unknown" - rendered as a blank '---' badge with both Connect/Disconnect buttons disabled. setConnected() now resets Heater/Stirrer to null whenever the browser's own websocket connection drops, so a stale Connected/Disconnected badge from before the disconnect doesn't keep misleadingly showing as current. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaPLuRPpyjWcwhMvCvpHCL