- The Data page's probe was an HTTP GET /api/v1/stations (8s timeout)
that read as 'loading data' and could stall the slide. Replaced with a
bare TCP connect to the relay host:port — just enough to trigger the
iOS Local Network permission prompt, zero payload transferred.
- Grant -> auto-advance to the final slide (existing onChange); denial or
unreachable relay -> Continue re-enables and proceeds. 12s safety
timeout so the page can never dead-end on a spinner.
- NWConnection held on the prompter so the connect survives until the
prompt is answered. Status copy: 'Waiting for network permission…'.
Full dataset still downloads AFTER onboarding via forced refresh.
35 tests pass.