CodePulse v2.3.107 — QR pairing firewall rule + multi-NIC hardening
Production hardening for QR pairing: installer now provisions a Windows Firewall rule, Rust ranks multi-NIC machines correctly, and a StrictMode unmount race in the retry handler is fixed.
QR Pairing Production Hardening (TAB-510 — TAB-482 Phase 6)
- Windows Firewall rule provisioned by the installer — The NSIS installer now adds an inbound TCP allow rule named "CodePulse QR Pairing" scoped to
$INSTDIR\codepulse-panel.exe, eliminating the undifferentiated first-run OS firewall dialog. The uninstaller removes the rule as Step 2 of 6 so the path reference is still resolvable at teardown time. A newcheck_firewall_ruleTauri command surfaces a gold-styled warning banner if the rule is missing, and fails open on unexpectednetshexit codes to avoid blocking pairing over a diagnostics misread. - Multi-NIC ranking replaces first-interface selection —
local_ip()gave way to a ranked enumeration vialist_afinet_netifas()withis_usable_lanrejecting loopback, link-local, Docker bridges, and all IPv6, andlan_preference_rankordering 192.168.x > 10.x > other private > Tailscale CGNAT > WSL2/Hyper-V. Tiebreakers use au32-packed numeric IP value for reboot-stable ordering. A grey "Trouble connecting?" hint appears when more than one candidate is detected. - StrictMode retry race fixed —
unmountedRefis now reset tofalseinside theuseEffectsetup on each mount. Previously, React StrictMode's mount-unmount-remount cycle could leave the flag permanentlytrue, silently killing every retry attempt inPairingCard.