From c49fac407cd7e20e2c0b412a6a7737c69c0fb7f8 Mon Sep 17 00:00:00 2001 From: Kaj Schittecat Date: Tue, 4 Aug 2026 10:24:25 +0200 Subject: [PATCH] touch: auto-retry is opt-in (default OFF) on top of the #230 schema repair Per user feedback on beta_57: the retry default is the user's choice to make. Applies to the v45 migration line, the fresh-install default, and the pre-UI mesh state. Co-Authored-By: Claude Opus 4.8 --- src/MyMesh.cpp | 2 +- src/MyMesh.h | 2 +- src/helpers/esp32/TouchPrefsStore.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/MyMesh.cpp b/src/MyMesh.cpp index 929521ed..ccdc502b 100644 --- a/src/MyMesh.cpp +++ b/src/MyMesh.cpp @@ -1689,7 +1689,7 @@ bool MyMesh::companionRetryQueueClone(int slot_idx, const mesh::Packet* packet, void MyMesh::companionRetryStart(const mesh::Packet* packet, const uint8_t retry_key[MAX_HASH_SIZE]) { - if (!_companion_retry_enabled) return; // Radio & Mesh toggle (default ON) — no train, no retries + if (!_companion_retry_enabled) return; // Radio & Mesh toggle (opt-in, default OFF) — no train, no retries if (!packet || !retry_key) return; const uint8_t payload_type = packet->getPayloadType(); diff --git a/src/MyMesh.h b/src/MyMesh.h index 127e7e56..3c05cc01 100644 --- a/src/MyMesh.h +++ b/src/MyMesh.h @@ -991,7 +991,7 @@ public: bool isRadioReceiving() const { return _radio && _radio->isReceiving(); } private: - bool _companion_retry_enabled = true; // see setCompanionRetryEnabled + bool _companion_retry_enabled = false; // opt-in; UITask::begin() applies the persisted toggle static const uint8_t COMPANION_TEXT_QUEUE_CAPACITY = 16; uint8_t companionDetachQueuedText(mesh::Packet* packets[], uint8_t priorities[], uint32_t scheduled_for[]); diff --git a/src/helpers/esp32/TouchPrefsStore.cpp b/src/helpers/esp32/TouchPrefsStore.cpp index cd1022a6..ae1204e5 100644 --- a/src/helpers/esp32/TouchPrefsStore.cpp +++ b/src/helpers/esp32/TouchPrefsStore.cpp @@ -130,7 +130,7 @@ static void cfgSetDefaults(TouchCfg& c) { c.compact_chat = 0; // OFF: bubble chat layout (opt-in IRC-style dense rows) c.clock_floor = 0; // no persisted send-timestamp floor yet c.rx_queue = 1; // ON: buffered receive (test-channel default; opt-out toggle in Radio & Mesh) - c.retry_echo = 1; // ON: retry sends until the mesh confirms them (opt-out toggle in Radio & Mesh) + c.retry_echo = 0; // OFF: auto-retry is opt-in (toggle in Radio & Mesh) c.sleep_idle = 0; // default: idle light-sleep OFF { const char* d = "ertui"; for (int i = 0; i < 5; i++) c.nav_keys[i] = (uint8_t)d[i]; } // default tab hotkeys E/R/T/U/I c.map_zoom_buttons = 0; // default: map zoom = slider @@ -223,7 +223,7 @@ static void cfgLoadOrMigrate() { if (stored_version < 31) s_cfg.compact_chat = 0; // new trailing field: compact chat rows off by default if (stored_version < 32) s_cfg.clock_floor = 0; // new trailing field: no send-timestamp floor persisted yet (#89) if (stored_version < 33) s_cfg.rx_queue = 1; // buffered LoRa receive ON for the test channel (opt-out toggle in Radio & Mesh) - if (stored_version < 45) s_cfg.retry_echo = 1; // v45: correctly appended auto-retry preference + if (stored_version < 45) s_cfg.retry_echo = 0; // v45: correctly appended auto-retry preference; opt-in per user feedback if (stored_version < 34) s_cfg.web_mirror = 0; // new trailing field: web control panel off by default (opt-in remote control) if (stored_version < 35) s_cfg.remote_mode = 0; // new trailing field: remote mode off by default (opt-in, reboots to apply) if (stored_version < 36) s_cfg.remote_landscape = 0;