Changes
Pairing Fix (Critical)
- Fixed pairing failures caused by missing retry/polling logic after the PIN is returned to the user
- Previously, the pairing state machine ran stages 1-5 sequentially without waiting for the user to enter the PIN on the host web UI. Stage 2 sent a PIN-encrypted challenge that the server could only decrypt after PIN entry, causing an immediate "Empty challenge response" failure.
- Now stages 2-4 retry every 1 second for up to 120 seconds when the server reports "not paired" (PIN not yet entered)
- Increased per-request HTTP timeout from 15s to 120s for all pairing requests (was hitting curl timeout on slower connections or HTTPS stages)