Deferred /simplify follow-ups from #168, carried in #167 (whose e2e/floor work landed in #189):
- A shared
useReconnect({ probe, graceMs, onReady }) controller hook to collapse the duplicated grace-timer/probe-loop engine across WifiHandoffOverlay, CredentialsHandoffOverlay, ReconnectingOverlay (and the 4th copy in SettingsApp.tsx).
CredentialsStep handoff-decision dedup.
getEthernetStatus / start-ap.sh nmcli micro-optimizations.
Pure refactor — no behavior change intended. The handoff paths now have e2e (setup-wifi-handoff.spec.ts) guarding the WiFi flow, which makes this refactor safer than when it was deferred. Touches setup-critical reconnect logic, so validate on a device before merging.
Deferred /simplify follow-ups from #168, carried in #167 (whose e2e/floor work landed in #189):
useReconnect({ probe, graceMs, onReady })controller hook to collapse the duplicated grace-timer/probe-loop engine acrossWifiHandoffOverlay,CredentialsHandoffOverlay,ReconnectingOverlay(and the 4th copy inSettingsApp.tsx).CredentialsStephandoff-decision dedup.getEthernetStatus/start-ap.shnmcli micro-optimizations.Pure refactor — no behavior change intended. The handoff paths now have e2e (
setup-wifi-handoff.spec.ts) guarding the WiFi flow, which makes this refactor safer than when it was deferred. Touches setup-critical reconnect logic, so validate on a device before merging.