From 94d61c75eb4ba664276a68dbb4309efcba3f763e Mon Sep 17 00:00:00 2001 From: Strycher Date: Sun, 19 Jul 2026 23:38:18 -0400 Subject: [PATCH] feat(#304): surface Offband capabilities in Device Info A capability-gated control that doesn't appear is indistinguishable from a broken one. Diagnosing "the FEM LNA toggle is missing" on real hardware required a rebuild, because the caps byte was never surfaced and the app debug log records nothing in a release build unless logging is enabled. Adds an "Offband capabilities" row to Device Info showing the raw caps byte, firmware version code, and which gated features it grants, e.g. "0x02 (v16) - block". That turned an unexplained missing toggle into a one-look answer: firmware v16 running, FEM LNA bit clear, client correct. Also logs the same values at device-info parse for anyone who does have logging on. Co-Authored-By: Claude Opus 4.8 --- lib/connector/meshcore_connector.dart | 10 ++++++ lib/l10n/app_en.arb | 1 + lib/l10n/app_localizations.dart | 6 ++++ lib/l10n/app_localizations_bg.dart | 3 ++ lib/l10n/app_localizations_de.dart | 3 ++ lib/l10n/app_localizations_en.dart | 3 ++ lib/l10n/app_localizations_es.dart | 3 ++ lib/l10n/app_localizations_fr.dart | 3 ++ lib/l10n/app_localizations_hu.dart | 3 ++ lib/l10n/app_localizations_it.dart | 3 ++ lib/l10n/app_localizations_ja.dart | 3 ++ lib/l10n/app_localizations_ko.dart | 3 ++ lib/l10n/app_localizations_nl.dart | 3 ++ lib/l10n/app_localizations_pl.dart | 3 ++ lib/l10n/app_localizations_pt.dart | 3 ++ lib/l10n/app_localizations_ru.dart | 3 ++ lib/l10n/app_localizations_sk.dart | 3 ++ lib/l10n/app_localizations_sl.dart | 3 ++ lib/l10n/app_localizations_sv.dart | 3 ++ lib/l10n/app_localizations_uk.dart | 3 ++ lib/l10n/app_localizations_zh.dart | 3 ++ lib/screens/settings_screen.dart | 11 ++++++ untranslated.json | 51 +++++++++++++++++++++++++++ 23 files changed, 133 insertions(+) diff --git a/lib/connector/meshcore_connector.dart b/lib/connector/meshcore_connector.dart index f6fd648..04cbbbf 100644 --- a/lib/connector/meshcore_connector.dart +++ b/lib/connector/meshcore_connector.dart @@ -4731,6 +4731,16 @@ class MeshCoreConnector extends ChangeNotifier { // FEM LNA state rides one byte past the caps byte on v16+ (#304). Primary // read on connect — a 0xC3 GET is only the fallback. _femLnaEnabled = parseFemLnaState(frame); + // Capability-gated features are invisible when a bit is clear, which looks + // identical to a bug. Log the raw inputs so "the toggle didn't appear" can + // be told apart from "this radio says it can't". (#304) + _appDebugLogService?.info( + 'Offband caps=0x${(_offbandCaps ?? 0).toRadixString(16).padLeft(2, '0')} ' + 'verCode=${_firmwareVerCode ?? 0} frameLen=${frame.length} ' + 'femLnaByte=${_femLnaEnabled == null ? 'absent' : (_femLnaEnabled! ? '1' : '0')} ' + 'femCapable=$supportsOffbandFemLna blockCapable=$supportsOffbandBlock', + tag: 'Device', + ); // Caps just landed; (re)evaluate GPS polling in case a `gps=1` custom-var // frame arrived before this device-info reply set support. (#144) _reconcileGpsPolling(); diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index f66e71d..48c6f31 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -236,6 +236,7 @@ "settings_infoStatus": "Status", "settings_infoFirmware": "Firmware", "settings_infoModel": "Model", + "settings_infoOffbandCaps": "Offband capabilities", "settings_infoBattery": "Battery", "settings_infoPublicKey": "Public Key", "settings_publicKeyCopied": "Public key copied", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index c0a16b8..2c425e2 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1174,6 +1174,12 @@ abstract class AppLocalizations { /// **'Model'** String get settings_infoModel; + /// No description provided for @settings_infoOffbandCaps. + /// + /// In en, this message translates to: + /// **'Offband capabilities'** + String get settings_infoOffbandCaps; + /// No description provided for @settings_infoBattery. /// /// In en, this message translates to: diff --git a/lib/l10n/app_localizations_bg.dart b/lib/l10n/app_localizations_bg.dart index 263706c..ee62916 100644 --- a/lib/l10n/app_localizations_bg.dart +++ b/lib/l10n/app_localizations_bg.dart @@ -590,6 +590,9 @@ class AppLocalizationsBg extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Батерия'; diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index c90f7d3..92c1102 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -585,6 +585,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Akku'; diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index a274d5b..7989c98 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -575,6 +575,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Battery'; diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 127c588..df55c77 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -586,6 +586,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Batería'; diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 560c8fc..e02d168 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -590,6 +590,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Batterie'; diff --git a/lib/l10n/app_localizations_hu.dart b/lib/l10n/app_localizations_hu.dart index 3205556..3dabd04 100644 --- a/lib/l10n/app_localizations_hu.dart +++ b/lib/l10n/app_localizations_hu.dart @@ -588,6 +588,9 @@ class AppLocalizationsHu extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Akku'; diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index d1b43bf..c4ad345 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -588,6 +588,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Batteria'; diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 73c62b1..1c2edbf 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -561,6 +561,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'バッテリー'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 4d50ab1..6403027 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -561,6 +561,9 @@ class AppLocalizationsKo extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => '배터리'; diff --git a/lib/l10n/app_localizations_nl.dart b/lib/l10n/app_localizations_nl.dart index 7f2d73f..8e34076 100644 --- a/lib/l10n/app_localizations_nl.dart +++ b/lib/l10n/app_localizations_nl.dart @@ -582,6 +582,9 @@ class AppLocalizationsNl extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Batterij'; diff --git a/lib/l10n/app_localizations_pl.dart b/lib/l10n/app_localizations_pl.dart index 10f7852..2a034a7 100644 --- a/lib/l10n/app_localizations_pl.dart +++ b/lib/l10n/app_localizations_pl.dart @@ -590,6 +590,9 @@ class AppLocalizationsPl extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Bateria'; diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index b929742..b0851fe 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -588,6 +588,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Bateria'; diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index e299f98..5ae0d11 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -587,6 +587,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Батарея'; diff --git a/lib/l10n/app_localizations_sk.dart b/lib/l10n/app_localizations_sk.dart index 291d587..0b885ac 100644 --- a/lib/l10n/app_localizations_sk.dart +++ b/lib/l10n/app_localizations_sk.dart @@ -582,6 +582,9 @@ class AppLocalizationsSk extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Batéria'; diff --git a/lib/l10n/app_localizations_sl.dart b/lib/l10n/app_localizations_sl.dart index 88cbfbd..fa6c120 100644 --- a/lib/l10n/app_localizations_sl.dart +++ b/lib/l10n/app_localizations_sl.dart @@ -579,6 +579,9 @@ class AppLocalizationsSl extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Baterija'; diff --git a/lib/l10n/app_localizations_sv.dart b/lib/l10n/app_localizations_sv.dart index 0262af4..a4e67f6 100644 --- a/lib/l10n/app_localizations_sv.dart +++ b/lib/l10n/app_localizations_sv.dart @@ -577,6 +577,9 @@ class AppLocalizationsSv extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Batteri'; diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index 68c9be4..00aeeb1 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -585,6 +585,9 @@ class AppLocalizationsUk extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => 'Батарея'; diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index 09b81e5..051db0e 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -553,6 +553,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get settings_infoModel => 'Model'; + @override + String get settings_infoOffbandCaps => 'Offband capabilities'; + @override String get settings_infoBattery => '电池'; diff --git a/lib/screens/settings_screen.dart b/lib/screens/settings_screen.dart index 16b9e16..e7a030f 100644 --- a/lib/screens/settings_screen.dart +++ b/lib/screens/settings_screen.dart @@ -403,6 +403,17 @@ class _SettingsScreenState extends State { _buildInfoRow(l10n.settings_infoFirmware, firmwareVersion), if (deviceModel != null) _buildInfoRow(l10n.settings_infoModel, deviceModel), + // Capability-gated controls vanish silently when a bit is clear, + // which is indistinguishable from a bug. Surface the raw inputs so + // "missing feature" can be diagnosed without enabling logging. (#304) + if (connector.offbandCaps != null) + _buildInfoRow( + l10n.settings_infoOffbandCaps, + '0x${connector.offbandCaps!.toRadixString(16).padLeft(2, '0')}' + ' (v${connector.firmwareVerCode ?? 0})' + '${connector.supportsOffbandFemLna ? ' · FEM LNA' : ''}' + '${connector.supportsOffbandBlock ? ' · block' : ''}', + ), _buildBatteryInfoRow(context, connector), if (connector.selfName != null) _buildInfoRow(l10n.settings_nodeName, connector.selfName!), diff --git a/untranslated.json b/untranslated.json index 31dc9b1..c6bcee5 100644 --- a/untranslated.json +++ b/untranslated.json @@ -14,6 +14,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -21,6 +22,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -40,6 +42,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -74,6 +77,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -81,6 +85,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -100,6 +105,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -134,6 +140,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -141,6 +148,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -160,6 +168,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -194,6 +203,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -201,6 +211,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -220,6 +231,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -254,6 +266,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -261,6 +274,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -280,6 +294,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -314,6 +329,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -321,6 +337,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -340,6 +357,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -374,6 +392,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -381,6 +400,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -400,6 +420,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -434,6 +455,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -441,6 +463,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -460,6 +483,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -494,6 +518,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -501,6 +526,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -520,6 +546,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -554,6 +581,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -561,6 +589,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -580,6 +609,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -614,6 +644,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -621,6 +652,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -640,6 +672,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -674,6 +707,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -681,6 +715,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -700,6 +735,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -734,6 +770,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -741,6 +778,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -760,6 +798,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -794,6 +833,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -801,6 +841,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -820,6 +861,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -854,6 +896,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -861,6 +904,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -880,6 +924,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -914,6 +959,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -921,6 +967,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -940,6 +987,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block", @@ -974,6 +1022,7 @@ "settings_gpsStatusNoResponse", "settings_infoFirmware", "settings_infoModel", + "settings_infoOffbandCaps", "settings_publicKeyCopied", "settings_femLna", "settings_femLnaSubtitle", @@ -981,6 +1030,7 @@ "appSettings_clockSystem", "appSettings_clock12h", "appSettings_clock24h", + "contacts_searchSensors", "channels_notifications", "channels_notifyAll", "channels_notifyMentionsOnly", @@ -1000,6 +1050,7 @@ "channels_qrAddConfirm", "channels_qrAdded", "channels_qrExists", + "listFilter_sensors", "contacts_repeaterPathTraceVia", "snrIndicator_noNeighbors", "block_block",