When macOS roams between access points on the same SSID (e.g. enterprise
WiFi), NetworkInterface fields like metric or physicalAddress can change
while interfaceName and networkOrSsid remain identical. The existing
operator!= on NetworkInterface compares all 11 fields, so these cosmetic
changes enter the "Unidentified interface change" branch in
onNetworkStateChanged() and still emit networkChanged(), which triggers
a full tunnel teardown and rebuild via ConnectionManager::updateConnectionSettings().
This causes 15-20 seconds of connectivity loss per roam event, which on
multi-AP networks can happen repeatedly.
This patch gates the networkChanged() emission on whether the change is
significant (interface name or SSID actually changed). Minor changes such
as same-SSID AP roams still update the cached state but no longer trigger
a reconnect. The tunnel stays up through the roam, which WireGuard and
AmneziaWG handle natively at the protocol level.
Fixes#307
Co-authored-by: Safibulae <Safibulae@users.noreply.github.com>
* Capitalize Belarusian language name for consistency with other languages
* Add Belarusian language to language switcher
* Add translation of main app, CLI, installer, uninstaller to Belarusian language
* Include Belarusian translation of main app, CLI, intaller, uninstaller to CMake and Windows resources