columba/python
torlando-tech ced6fdd597 fix: hot-add network interfaces to AutoInterface on connectivity change
When Columba starts without WiFi (or with only cellular), AutoInterface
scans for network interfaces once during __init__ and never again. If
WiFi connects later, the new wlan0 interface is invisible — no multicast
discovery sockets are created, no peers are found.

Two bugs fixed:

1. NetworkChangeManager only fired on network *switches* (lastNetworkId
   != null), not on first connection. Changed condition to also fire
   when lastNetworkId is null, with the existing binder.isInitialized()
   guard preventing premature invocation during startup.

2. No mechanism existed to tell AutoInterface about new interfaces.
   Added auto_interface_manager.py which surgically hot-adds only NEW
   interfaces to the existing AutoInterface — creating multicast/unicast
   discovery sockets, joining the multicast group, starting discovery
   threads, and creating UDP data servers. This avoids tearing down
   existing peer connections on already-adopted interfaces.

The hot-add runs before the LXMF announce on network change, so the
announce goes out on the newly added interface.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 17:42:09 -05:00
..
ble_modules feat: add BLE peer RSSI signal tracking 2026-01-18 21:25:47 -05:00
drivers initial commit 2025-11-30 19:59:14 -05:00
jnius fix: Correct TCP RNode config format and add stub modules 2025-12-14 00:10:49 -05:00
lxst_modules fix: batch TX audio frames to eliminate progressive call degradation 2026-02-16 14:45:06 -05:00
patches initial commit 2025-11-30 19:59:14 -05:00
usb4a fix: Correct TCP RNode config format and add stub modules 2025-12-14 00:10:49 -05:00
usbserial4a fix: Correct TCP RNode config format and add stub modules 2025-12-14 00:10:49 -05:00
android_ble_interface.py feat: add BLE peer RSSI signal tracking 2026-01-18 21:25:47 -05:00
auto_interface_manager.py fix: hot-add network interfaces to AutoInterface on connectivity change 2026-03-01 17:42:09 -05:00
columba_logo.py feat: display Columba logo on RNode OLED via external framebuffer 2025-12-08 21:58:48 -05:00
conftest.py test: Add comprehensive unit tests for reticulum_wrapper.py 2025-12-12 22:22:10 -05:00
interface_lookup.py fix: resolve announce interface identification when transport is disabled 2026-02-21 17:31:10 -05:00
logging_utils.py initial commit 2025-11-30 19:59:14 -05:00
memory_profiler.py docs(05-02): audit PyObject lifecycle for memory leaks 2026-01-29 18:41:10 -05:00
requirements.txt chore: remove dead Python LXST dependencies and audio backend 2026-02-07 16:02:34 -05:00
reticulum_wrapper.py fix: hot-add network interfaces to AutoInterface on connectivity change 2026-03-01 17:42:09 -05:00
rmsp_client.py Revert "fix(security): correct destination direction in RMSP hash verification" 2026-01-12 21:25:45 -05:00
rnode_interface.py fix: abort USB start if old read thread won't stop 2026-01-20 19:37:34 -05:00
signal_quality.py feat: add BLE peer RSSI signal tracking 2026-01-18 21:25:47 -05:00
test_android_ble_driver.py feat: add BLE peer RSSI signal tracking 2026-01-18 21:25:47 -05:00
test_android_ble_interface.py test: add unit tests for BLE interface RSSI methods 2026-01-18 21:52:09 -05:00
test_announce_handler.py fix: resolve announce interface identification when transport is disabled 2026-02-21 17:31:10 -05:00
test_autoconnected_endpoints.py test: add comprehensive unit tests for RNS discovery feature 2026-01-21 22:58:08 -05:00
test_ble_duplicate_identity_stale.py test: add tests for stale identity-to-address rejection bug fix 2026-01-18 16:06:35 -05:00
test_ble_modules_android_ble_interface.py test: add unit tests for BLE interface RSSI methods 2026-01-18 21:52:09 -05:00
test_call_manager.py fix: batch TX audio frames to eliminate progressive call degradation 2026-02-16 14:45:06 -05:00
test_discovered_interfaces.py test: add comprehensive tests for get_discovered_interfaces() 2026-01-21 23:19:20 -05:00
test_discovery_enabled.py test: add comprehensive unit tests for RNS discovery feature 2026-01-21 22:58:08 -05:00
test_memory_profiler.py test(05-02): add unit tests for memory profiler 2026-01-29 17:33:04 -05:00
test_opportunistic_timeout.py test: update propagation node tests to match None-clearing behavior 2026-01-16 19:00:06 -05:00
test_path_request.py feat: Auto-request path for unknown destinations 2025-12-12 19:18:48 -05:00
test_pr422_icon_appearance.py fix: swap icon foreground/background color order to match LXMF standard 2026-02-13 06:18:47 +00:00
test_propagated_status_protection.py fix(#257): add Python tracking + Kotlin guard for propagated message status 2026-01-16 16:55:42 -05:00
test_propagation_fallback.py feat: Add automatic relay fallback and manual retry for failed messages 2025-12-13 00:01:13 -05:00
test_reticulum_wrapper.py feat(telephony): improve call setup reliability and init speed 2026-02-08 12:43:23 -05:00
test_rmsp_client.py fix(tests): use explicit global coverage marker in Server D test 2026-01-11 21:44:49 -05:00
test_rnode_interface.py refactor: extract testable utilities to improve test coverage 2026-01-20 17:46:09 -05:00
test_signal_quality.py feat: add BLE peer RSSI signal tracking 2026-01-18 21:25:47 -05:00
test_stub_modules.py test: Improve patch coverage from 20.94% to 80%+ with 61 new tests 2025-12-14 01:30:09 -05:00
test_telemetry_format.py test: add comprehensive telemetry format tests 2025-12-29 17:50:57 -05:00
test_telemetry_host_mode.py fix: include host device location in hosted group telemetry stream 2026-02-26 16:13:01 +01:00
test_telemetry_stream.py fix: swap icon foreground/background color order to match LXMF standard 2026-02-13 06:18:47 +00:00
test_usb_bridge.py fix: resolve detekt issues and update tests for USB RNode support 2026-01-20 00:24:53 -05:00
test_wrapper_announce_polling.py test: Add comprehensive tests for interface name extraction 2026-01-21 19:07:22 -05:00
test_wrapper_ble.py feat: simplify USB RNode interface naming to "RNode USB" 2026-01-19 23:43:57 -05:00
test_wrapper_config.py test: Add 30 tests to improve TCP RNode patch coverage to 80%+ 2025-12-14 01:58:19 -05:00
test_wrapper_destination.py test: Add comprehensive unit tests for reticulum_wrapper.py 2025-12-12 22:22:10 -05:00
test_wrapper_heartbeat.py fix: increase heartbeat stop test timeout to match 5s idle sleep 2026-02-20 18:04:23 -05:00
test_wrapper_identity.py test: Add comprehensive unit tests for reticulum_wrapper.py 2025-12-12 22:22:10 -05:00
test_wrapper_initialization.py feat(telephony): improve call setup reliability and init speed 2026-02-08 12:43:23 -05:00
test_wrapper_link.py fix(test): stabilize flaky establish_link tests with concrete status values 2026-02-15 15:06:12 -05:00
test_wrapper_message_size_limit.py test: add comprehensive tests for incoming message size limit feature 2026-01-03 23:04:51 -05:00
test_wrapper_messaging.py test: add unit tests for BLE interface RSSI methods 2026-01-18 21:52:09 -05:00
test_wrapper_path.py fix: flaky Python test from global state leak + remove CI self-cancel 2026-02-10 19:35:58 -05:00
test_wrapper_peer_identity.py perf: Optimize peer identity restoration from minutes to milliseconds 2025-12-14 22:13:35 -05:00
test_wrapper_propagation.py test: update propagation node tests to match None-clearing behavior 2026-01-16 19:00:06 -05:00
test_wrapper_reactions.py auto-claude: subtask-4-3 - Add Python tests for reaction send/receive 2025-12-24 20:46:18 -05:00
test_wrapper_stamp_generator.py test: add Python tests for stamp generator callback 2025-12-16 18:52:21 -05:00
test_wrapper_utilities.py test: Add comprehensive unit tests for reticulum_wrapper.py 2025-12-12 22:22:10 -05:00
TorClientInterface.py Add SOCKS5 proxy UI fields to TCP Client interface config 2026-02-16 19:47:17 -05:00
usb_bridge.py fix: auto-generate Bluetooth RNode interface names from device name 2026-01-19 23:48:06 -05:00