From 8fa99611cbdfb8bcb5cc2bffd6d0cf19d9348aaa Mon Sep 17 00:00:00 2001 From: agessaman Date: Tue, 30 Dec 2025 12:06:39 -0800 Subject: [PATCH] Refactor loadPrefs in CommonCLI to handle fresh installs and upgrades. Introduce flags for fresh installations and upgrades, ensuring correct default settings for MQTT bridge. Migrate preferences from old filename and save updated settings accordingly. --- src/helpers/CommonCLI.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/helpers/CommonCLI.cpp b/src/helpers/CommonCLI.cpp index df1edf32..2410b9f1 100644 --- a/src/helpers/CommonCLI.cpp +++ b/src/helpers/CommonCLI.cpp @@ -37,14 +37,19 @@ static uint32_t _atoi(const char* sp) { } void CommonCLI::loadPrefs(FILESYSTEM* fs) { + bool is_fresh_install = false; + bool is_upgrade = false; + if (fs->exists("/com_prefs")) { loadPrefsInt(fs, "/com_prefs"); // new filename } else if (fs->exists("/node_prefs")) { loadPrefsInt(fs, "/node_prefs"); + is_upgrade = true; // Migrating from old filename savePrefs(fs); // save to new filename fs->remove("/node_prefs"); // remove old } else { // File doesn't exist - set default bridge settings for fresh installs + is_fresh_install = true; _prefs->bridge_pkt_src = 1; // Default to RX (logRx) for new installs } #ifdef WITH_MQTT_BRIDGE @@ -52,6 +57,16 @@ void CommonCLI::loadPrefs(FILESYSTEM* fs) { loadMQTTPrefs(fs); // Sync MQTT prefs to NodePrefs so existing code (like MQTTBridge) can access them syncMQTTPrefsToNodePrefs(); + + // For MQTT bridge, migrate bridge.source to RX (logRx) only on fresh installs or upgrades + // This ensures new users get the correct default, but respects existing user choices + // MQTT bridge with TX requires mqtt.tx to be enabled (disabled by default), + // so RX is the sensible default for MQTT bridge installations + if ((is_fresh_install || is_upgrade) && _prefs->bridge_pkt_src == 0) { + MESH_DEBUG_PRINTLN("MQTT Bridge: Migrating bridge.source from tx to rx (MQTT bridge default)"); + _prefs->bridge_pkt_src = 1; // Set to RX (logRx) + savePrefs(fs); // Save the updated preference + } #endif }