From a683c56e9bad49adbcfd11f6fac445356e1fb55c Mon Sep 17 00:00:00 2001
From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Date: Tue, 7 Jul 2026 09:06:42 -0700
Subject: [PATCH] Align Android message status wording
---
.skills/compose-ui/strings-index.txt | 8 ++
.../org/meshtastic/core/model/Message.kt | 29 ++++++-
.../meshtastic/core/model/DataPacketTest.kt | 46 ++++++++++-
.../composeResources/values/strings.xml | 38 +++++----
docs/ar-rSA/user/messages-and-channels.md | 8 +-
docs/be-rBY/user/messages-and-channels.md | 8 +-
docs/bg-rBG/user/messages-and-channels.md | 6 +-
docs/ca-rES/user/messages-and-channels.md | 8 +-
docs/cs-rCZ/user/messages-and-channels.md | 6 +-
docs/de-rDE/user/messages-and-channels.md | 6 +-
docs/el-rGR/user/messages-and-channels.md | 10 +--
docs/en/user/messages-and-channels.md | 14 ++--
docs/es-rES/user/messages-and-channels.md | 8 +-
docs/et-rEE/user/messages-and-channels.md | 7 +-
docs/fr-rFR/user/messages-and-channels.md | 6 +-
docs/ga-rIE/user/messages-and-channels.md | 8 +-
docs/gl-rES/user/messages-and-channels.md | 14 ++--
docs/hr-rHR/user/messages-and-channels.md | 14 ++--
docs/ht-rHT/user/messages-and-channels.md | 8 +-
docs/hu-rHU/user/messages-and-channels.md | 8 +-
docs/is-rIS/user/messages-and-channels.md | 14 ++--
docs/it-rIT/user/messages-and-channels.md | 8 +-
docs/iw-rIL/user/messages-and-channels.md | 14 ++--
docs/ja-rJP/user/messages-and-channels.md | 8 +-
docs/ko-rKR/user/messages-and-channels.md | 8 +-
docs/lt-rLT/user/messages-and-channels.md | 8 +-
docs/nl-rNL/user/messages-and-channels.md | 8 +-
docs/no-rNO/user/messages-and-channels.md | 8 +-
docs/pl-rPL/user/messages-and-channels.md | 6 +-
docs/pt-rBR/user/messages-and-channels.md | 8 +-
docs/pt-rPT/user/messages-and-channels.md | 8 +-
docs/ro-rRO/user/messages-and-channels.md | 6 +-
docs/ru-rRU/user/messages-and-channels.md | 6 +-
docs/sk-rSK/user/messages-and-channels.md | 8 +-
docs/sl-rSI/user/messages-and-channels.md | 8 +-
docs/sq-rAL/user/messages-and-channels.md | 8 +-
docs/sr-rLatn/user/messages-and-channels.md | 6 +-
docs/srp/user/messages-and-channels.md | 6 +-
docs/sv-rSE/user/messages-and-channels.md | 6 +-
docs/tr-rTR/user/messages-and-channels.md | 8 +-
docs/uk-rUA/user/messages-and-channels.md | 6 +-
docs/zh-rCN/user/messages-and-channels.md | 6 +-
.../messaging/component/MessageItem.kt | 3 +-
.../component/MessageItemPreviews.kt | 80 ++++++++++++++++++-
44 files changed, 335 insertions(+), 180 deletions(-)
diff --git a/.skills/compose-ui/strings-index.txt b/.skills/compose-ui/strings-index.txt
index b494598cab..0fc0850534 100644
--- a/.skills/compose-ui/strings-index.txt
+++ b/.skills/compose-ui/strings-index.txt
@@ -960,11 +960,19 @@ message
message_delivery_status
message_device_managed
message_input_label
+message_routing_error_admin_bad_session_key
+message_routing_error_admin_public_key_unauthorized
+message_routing_error_bad_request
+message_routing_error_duty_cycle_limit
message_routing_error_max_retransmit
message_routing_error_no_channel
+message_routing_error_no_interface
+message_routing_error_no_response
+message_routing_error_not_authorized
message_routing_error_pki_failed
message_routing_error_pki_send_fail_public_key
message_routing_error_pki_unknown_pubkey
+message_routing_error_rate_limit_exceeded
message_routing_error_too_large
message_status_delivered
message_status_enroute
diff --git a/core/model/src/commonMain/kotlin/org/meshtastic/core/model/Message.kt b/core/model/src/commonMain/kotlin/org/meshtastic/core/model/Message.kt
index efb213a3ca..410e8a3aa5 100644
--- a/core/model/src/commonMain/kotlin/org/meshtastic/core/model/Message.kt
+++ b/core/model/src/commonMain/kotlin/org/meshtastic/core/model/Message.kt
@@ -20,11 +20,19 @@ import org.jetbrains.compose.resources.StringResource
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.error
import org.meshtastic.core.resources.message_delivery_status
+import org.meshtastic.core.resources.message_routing_error_admin_bad_session_key
+import org.meshtastic.core.resources.message_routing_error_admin_public_key_unauthorized
+import org.meshtastic.core.resources.message_routing_error_bad_request
+import org.meshtastic.core.resources.message_routing_error_duty_cycle_limit
import org.meshtastic.core.resources.message_routing_error_max_retransmit
import org.meshtastic.core.resources.message_routing_error_no_channel
+import org.meshtastic.core.resources.message_routing_error_no_interface
+import org.meshtastic.core.resources.message_routing_error_no_response
+import org.meshtastic.core.resources.message_routing_error_not_authorized
import org.meshtastic.core.resources.message_routing_error_pki_failed
import org.meshtastic.core.resources.message_routing_error_pki_send_fail_public_key
import org.meshtastic.core.resources.message_routing_error_pki_unknown_pubkey
+import org.meshtastic.core.resources.message_routing_error_rate_limit_exceeded
import org.meshtastic.core.resources.message_routing_error_too_large
import org.meshtastic.core.resources.message_status_delivered
import org.meshtastic.core.resources.message_status_enroute
@@ -78,23 +86,40 @@ fun getStringResFrom(routingError: Int): StringResource = when (routingError) {
else -> Res.string.unrecognized
}
+@Suppress("CyclomaticComplexMethod")
fun getMessageRoutingErrorStringResFrom(routingError: Int): StringResource = when (routingError) {
Routing.Error.GOT_NAK.value,
Routing.Error.TIMEOUT.value,
Routing.Error.MAX_RETRANSMIT.value,
- Routing.Error.NO_RESPONSE.value,
-> Res.string.message_routing_error_max_retransmit
Routing.Error.NO_CHANNEL.value -> Res.string.message_routing_error_no_channel
+ Routing.Error.NO_INTERFACE.value -> Res.string.message_routing_error_no_interface
+
+ Routing.Error.DUTY_CYCLE_LIMIT.value -> Res.string.message_routing_error_duty_cycle_limit
+
+ Routing.Error.RATE_LIMIT_EXCEEDED.value -> Res.string.message_routing_error_rate_limit_exceeded
+
Routing.Error.TOO_LARGE.value -> Res.string.message_routing_error_too_large
+ Routing.Error.NO_RESPONSE.value -> Res.string.message_routing_error_no_response
+
+ Routing.Error.BAD_REQUEST.value -> Res.string.message_routing_error_bad_request
+
+ Routing.Error.NOT_AUTHORIZED.value -> Res.string.message_routing_error_not_authorized
+
Routing.Error.PKI_FAILED.value -> Res.string.message_routing_error_pki_failed
Routing.Error.PKI_UNKNOWN_PUBKEY.value -> Res.string.message_routing_error_pki_unknown_pubkey
Routing.Error.PKI_SEND_FAIL_PUBLIC_KEY.value -> Res.string.message_routing_error_pki_send_fail_public_key
+ Routing.Error.ADMIN_BAD_SESSION_KEY.value -> Res.string.message_routing_error_admin_bad_session_key
+
+ Routing.Error.ADMIN_PUBLIC_KEY_UNAUTHORIZED.value ->
+ Res.string.message_routing_error_admin_public_key_unauthorized
+
else -> getStringResFrom(routingError)
}
@@ -140,7 +165,7 @@ fun isMessageStatusRetryable(status: MessageStatus?, routingError: Int, isDirect
else -> true
}
-private val nonRetryableMessageRoutingErrors = setOf(Routing.Error.NO_CHANNEL.value, Routing.Error.TOO_LARGE.value)
+private val nonRetryableMessageRoutingErrors = setOf(Routing.Error.TOO_LARGE.value)
data class Message(
val uuid: Long,
diff --git a/core/model/src/commonTest/kotlin/org/meshtastic/core/model/DataPacketTest.kt b/core/model/src/commonTest/kotlin/org/meshtastic/core/model/DataPacketTest.kt
index ab5d93c943..179bf66a17 100644
--- a/core/model/src/commonTest/kotlin/org/meshtastic/core/model/DataPacketTest.kt
+++ b/core/model/src/commonTest/kotlin/org/meshtastic/core/model/DataPacketTest.kt
@@ -20,24 +20,40 @@ import okio.ByteString.Companion.encodeUtf8
import org.meshtastic.core.resources.Res
import org.meshtastic.core.resources.error
import org.meshtastic.core.resources.message_delivery_status
+import org.meshtastic.core.resources.message_routing_error_admin_bad_session_key
+import org.meshtastic.core.resources.message_routing_error_admin_public_key_unauthorized
+import org.meshtastic.core.resources.message_routing_error_bad_request
+import org.meshtastic.core.resources.message_routing_error_duty_cycle_limit
import org.meshtastic.core.resources.message_routing_error_max_retransmit
import org.meshtastic.core.resources.message_routing_error_no_channel
+import org.meshtastic.core.resources.message_routing_error_no_interface
+import org.meshtastic.core.resources.message_routing_error_no_response
+import org.meshtastic.core.resources.message_routing_error_not_authorized
import org.meshtastic.core.resources.message_routing_error_pki_failed
import org.meshtastic.core.resources.message_routing_error_pki_send_fail_public_key
import org.meshtastic.core.resources.message_routing_error_pki_unknown_pubkey
+import org.meshtastic.core.resources.message_routing_error_rate_limit_exceeded
import org.meshtastic.core.resources.message_routing_error_too_large
import org.meshtastic.core.resources.message_status_delivered
import org.meshtastic.core.resources.message_status_enroute
import org.meshtastic.core.resources.message_status_recipient_delivered
import org.meshtastic.core.resources.message_status_relayed_not_confirmed
import org.meshtastic.core.resources.message_status_unknown
+import org.meshtastic.core.resources.routing_error_admin_bad_session_key
+import org.meshtastic.core.resources.routing_error_admin_public_key_unauthorized
+import org.meshtastic.core.resources.routing_error_bad_request
+import org.meshtastic.core.resources.routing_error_duty_cycle_limit
import org.meshtastic.core.resources.routing_error_max_retransmit
import org.meshtastic.core.resources.routing_error_no_channel
+import org.meshtastic.core.resources.routing_error_no_interface
+import org.meshtastic.core.resources.routing_error_no_response
import org.meshtastic.core.resources.routing_error_no_route
import org.meshtastic.core.resources.routing_error_none
+import org.meshtastic.core.resources.routing_error_not_authorized
import org.meshtastic.core.resources.routing_error_pki_failed
import org.meshtastic.core.resources.routing_error_pki_send_fail_public_key
import org.meshtastic.core.resources.routing_error_pki_unknown_pubkey
+import org.meshtastic.core.resources.routing_error_rate_limit_exceeded
import org.meshtastic.core.resources.routing_error_too_large
import org.meshtastic.core.resources.unrecognized
import org.meshtastic.proto.PortNum
@@ -309,13 +325,21 @@ class MessageTest {
Routing.Error.MAX_RETRANSMIT.value to Res.string.message_routing_error_max_retransmit,
Routing.Error.GOT_NAK.value to Res.string.message_routing_error_max_retransmit,
Routing.Error.TIMEOUT.value to Res.string.message_routing_error_max_retransmit,
- Routing.Error.NO_RESPONSE.value to Res.string.message_routing_error_max_retransmit,
Routing.Error.NO_CHANNEL.value to Res.string.message_routing_error_no_channel,
+ Routing.Error.NO_INTERFACE.value to Res.string.message_routing_error_no_interface,
+ Routing.Error.DUTY_CYCLE_LIMIT.value to Res.string.message_routing_error_duty_cycle_limit,
+ Routing.Error.RATE_LIMIT_EXCEEDED.value to Res.string.message_routing_error_rate_limit_exceeded,
+ Routing.Error.NO_RESPONSE.value to Res.string.message_routing_error_no_response,
+ Routing.Error.BAD_REQUEST.value to Res.string.message_routing_error_bad_request,
+ Routing.Error.NOT_AUTHORIZED.value to Res.string.message_routing_error_not_authorized,
Routing.Error.PKI_FAILED.value to Res.string.message_routing_error_pki_failed,
Routing.Error.PKI_SEND_FAIL_PUBLIC_KEY.value to
Res.string.message_routing_error_pki_send_fail_public_key,
Routing.Error.PKI_UNKNOWN_PUBKEY.value to Res.string.message_routing_error_pki_unknown_pubkey,
Routing.Error.TOO_LARGE.value to Res.string.message_routing_error_too_large,
+ Routing.Error.ADMIN_BAD_SESSION_KEY.value to Res.string.message_routing_error_admin_bad_session_key,
+ Routing.Error.ADMIN_PUBLIC_KEY_UNAUTHORIZED.value to
+ Res.string.message_routing_error_admin_public_key_unauthorized,
)
for ((routingError, expectedText) in mappings) {
@@ -366,10 +390,19 @@ class MessageTest {
listOf(
Routing.Error.MAX_RETRANSMIT.value to Res.string.routing_error_max_retransmit,
Routing.Error.NO_CHANNEL.value to Res.string.routing_error_no_channel,
+ Routing.Error.NO_INTERFACE.value to Res.string.routing_error_no_interface,
+ Routing.Error.DUTY_CYCLE_LIMIT.value to Res.string.routing_error_duty_cycle_limit,
+ Routing.Error.RATE_LIMIT_EXCEEDED.value to Res.string.routing_error_rate_limit_exceeded,
+ Routing.Error.NO_RESPONSE.value to Res.string.routing_error_no_response,
+ Routing.Error.BAD_REQUEST.value to Res.string.routing_error_bad_request,
+ Routing.Error.NOT_AUTHORIZED.value to Res.string.routing_error_not_authorized,
Routing.Error.PKI_FAILED.value to Res.string.routing_error_pki_failed,
Routing.Error.PKI_SEND_FAIL_PUBLIC_KEY.value to Res.string.routing_error_pki_send_fail_public_key,
Routing.Error.PKI_UNKNOWN_PUBKEY.value to Res.string.routing_error_pki_unknown_pubkey,
Routing.Error.TOO_LARGE.value to Res.string.routing_error_too_large,
+ Routing.Error.ADMIN_BAD_SESSION_KEY.value to Res.string.routing_error_admin_bad_session_key,
+ Routing.Error.ADMIN_PUBLIC_KEY_UNAUTHORIZED.value to
+ Res.string.routing_error_admin_public_key_unauthorized,
)
for ((routingError, expectedText) in mappings) {
@@ -385,9 +418,18 @@ class MessageTest {
)
val retryableRoutingErrors =
listOf(
+ Routing.Error.NO_INTERFACE.value,
+ Routing.Error.NO_RESPONSE.value,
+ Routing.Error.NO_CHANNEL.value,
+ Routing.Error.BAD_REQUEST.value,
+ Routing.Error.NOT_AUTHORIZED.value,
+ Routing.Error.DUTY_CYCLE_LIMIT.value,
Routing.Error.PKI_FAILED.value,
Routing.Error.PKI_SEND_FAIL_PUBLIC_KEY.value,
Routing.Error.PKI_UNKNOWN_PUBKEY.value,
+ Routing.Error.ADMIN_BAD_SESSION_KEY.value,
+ Routing.Error.ADMIN_PUBLIC_KEY_UNAUTHORIZED.value,
+ Routing.Error.RATE_LIMIT_EXCEEDED.value,
)
for (routingError in retryableRoutingErrors) {
@@ -395,7 +437,7 @@ class MessageTest {
}
assertTrue(messageWith(status = MessageStatus.DELIVERED).isStatusRetryable(isDirectMessage = true))
- val nonRetryableRoutingErrors = listOf(Routing.Error.NO_CHANNEL.value, Routing.Error.TOO_LARGE.value)
+ val nonRetryableRoutingErrors = listOf(Routing.Error.TOO_LARGE.value)
for (routingError in nonRetryableRoutingErrors) {
assertFalse(messageWith(status = MessageStatus.ERROR, routingError = routingError).isStatusRetryable())
diff --git a/core/resources/src/commonMain/composeResources/values/strings.xml b/core/resources/src/commonMain/composeResources/values/strings.xml
index 2579faeb85..855860134a 100644
--- a/core/resources/src/commonMain/composeResources/values/strings.xml
+++ b/core/resources/src/commonMain/composeResources/values/strings.xml
@@ -990,11 +990,19 @@
Message delivery status
This radio is managed and can only be changed by a remote admin.
Message
+ Admin session expired
+ Admin key not authorized
+ Invalid request
+ Duty cycle limit
Failed to deliver to mesh
- No channel selected
+ Channel/key mismatch
+ No radio interface
+ No app response
+ Not authorized
Could not send encrypted message
Recipient key unavailable
Recipient needs your key
+ Rate limited
Message is too large to send
Delivered to mesh
Sending...
@@ -1373,24 +1381,24 @@
Rotary encoder #1 enabled
I have read the <a href="https://meshtastic.org/docs/configuration/radio/device/#roles">Device Role Documentation</a> and the blog post about <a href="http://meshtastic.org/blog/choosing-the-right-device-role">Choosing The Right Device Role</a>.
- Bad session key
- Public Key unauthorized
- Bad Request
- Regional Duty Cycle Limit Reached
+ Admin session expired
+ Admin key not authorized
+ Invalid request
+ Duty cycle limit
Received a negative acknowledgment
- Max Retransmission Reached
- No Channel
- No Interface
- No response
+ Failed to deliver to mesh
+ Channel/key mismatch
+ No radio interface
+ No app response
No route
Acknowledged
- Not Authorized
- Encrypted Send Failed
- PKI send failed, no public key
- Unknown Public Key
- Rate Limit Exceeded. Please try again later.
+ Not authorized
+ Could not send encrypted message
+ Recipient key unavailable
+ Recipient needs your key
+ Rate limited
Timeout
- Packet too large
+ Message is too large to send
RSSI
Received Signal Strength Indicator, a measurement used to determine the power level being received by the antenna. A higher RSSI value generally indicates a stronger and more stable connection.
rsyslog server
diff --git a/docs/ar-rSA/user/messages-and-channels.md b/docs/ar-rSA/user/messages-and-channels.md
index d6c6f8474b..e554e4052d 100644
--- a/docs/ar-rSA/user/messages-and-channels.md
+++ b/docs/ar-rSA/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| استغرق وقت طويل | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| لم يجد وسيط | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| لا يوجد قناه | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| طلب غير جيد | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/be-rBY/user/messages-and-channels.md b/docs/be-rBY/user/messages-and-channels.md
index f1db74e110..1571e92a1c 100644
--- a/docs/be-rBY/user/messages-and-channels.md
+++ b/docs/be-rBY/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Скончыўся час чакання | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Няма інтэрфейсу | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Няма канала | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Няправільны запыт | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/bg-rBG/user/messages-and-channels.md b/docs/bg-rBG/user/messages-and-channels.md
index 3604823d63..96c874a447 100644
--- a/docs/bg-rBG/user/messages-and-channels.md
+++ b/docs/bg-rBG/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Няма интерфейс | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Няма канал | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Няма отговор | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Невалидна заявка | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/ca-rES/user/messages-and-channels.md b/docs/ca-rES/user/messages-and-channels.md
index 569dae8648..db86704d3b 100644
--- a/docs/ca-rES/user/messages-and-channels.md
+++ b/docs/ca-rES/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Temps esgotat | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Sense Interfície | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Sense canal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Sol·licitud errònia. | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/cs-rCZ/user/messages-and-channels.md b/docs/cs-rCZ/user/messages-and-channels.md
index 5fd6fc307d..ae6ba329f3 100644
--- a/docs/cs-rCZ/user/messages-and-channels.md
+++ b/docs/cs-rCZ/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Vypršel čas spojení | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Žádné rozhraní | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Žádný kanál | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Žádná odpověď | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Špatný požadavek | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/de-rDE/user/messages-and-channels.md b/docs/de-rDE/user/messages-and-channels.md
index 2c26362206..34747f51b2 100644
--- a/docs/de-rDE/user/messages-and-channels.md
+++ b/docs/de-rDE/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Zeitlimit erreicht | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Keine Schnittstelle | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Kein Kanal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Keine Antwort | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Ungültige Anfrage | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/el-rGR/user/messages-and-channels.md b/docs/el-rGR/user/messages-and-channels.md
index 3044a4ef27..3c0657d85c 100644
--- a/docs/el-rGR/user/messages-and-channels.md
+++ b/docs/el-rGR/user/messages-and-channels.md
@@ -76,12 +76,12 @@ When a message fails to deliver, the error indicator shows what went wrong:
| No Route | No path exists to the destination node | The recipient may be offline or out of mesh range. Try later or move closer. |
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Λήξη χρονικού ορίου | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
-| No Interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| No radio interface | No radio interface available to send | Check that your radio is connected and available. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Kein Kanal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Εσφαλμένο Αίτημα | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/en/user/messages-and-channels.md b/docs/en/user/messages-and-channels.md
index 719a74dc91..4bf7c41775 100644
--- a/docs/en/user/messages-and-channels.md
+++ b/docs/en/user/messages-and-channels.md
@@ -76,13 +76,13 @@ When a message fails to deliver, the error indicator shows what went wrong:
| No Route | No path exists to the destination node | The recipient may be offline or out of mesh range. Try later or move closer. |
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
-| No Interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
-| No Channel | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
-| Bad Request | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
+| No radio interface | No radio interface available to send | Check that your radio is connected and available. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
+| Channel/key mismatch | Destination channel/key does not match | Verify both nodes share the same channel and PSK. |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
+| Invalid request | Malformed or invalid request | Retry after updating or restarting the app if this persists. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/es-rES/user/messages-and-channels.md b/docs/es-rES/user/messages-and-channels.md
index 5a94f9cc76..531295b1ce 100644
--- a/docs/es-rES/user/messages-and-channels.md
+++ b/docs/es-rES/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Tiempo agotado | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Sin interfaz | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| No hay canal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Solicitud errónea | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/et-rEE/user/messages-and-channels.md b/docs/et-rEE/user/messages-and-channels.md
index a2c9ea7a0c..73d475baed 100644
--- a/docs/et-rEE/user/messages-and-channels.md
+++ b/docs/et-rEE/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Aegunud | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Liidest pole | No radio interface available to send | Kontrolli, kas raadio on ühendatud ja kanal on seadistatud. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Kanalit pole | The destination channel doesn't exist | Veendu, et mõlemal sõlmel oleks sama kanali seadistus. |
-| Too Large | Sõnum ületab maksimaalset sõnumi mahtu | Shorten your message (max ~200 characters). |
+| Message is too large to send | Sõnum ületab maksimaalset sõnumi mahtu | Shorten the message and try again. |
| Vastust pole | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Vigane päring | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Vihje:** Enamik kohaletoimetamise vigu laheneb iseenesest. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
@@ -174,4 +174,3 @@ Messages are queued and transmitted based on priority:
- [Kanali konf](https://meshtastic.org/docs/configuration/radio/channels) — üksikasjalikud kanali seaded leiate aadressilt meshtastic.org
---
-
diff --git a/docs/fr-rFR/user/messages-and-channels.md b/docs/fr-rFR/user/messages-and-channels.md
index 06bf84d20b..cbaa63d4b6 100644
--- a/docs/fr-rFR/user/messages-and-channels.md
+++ b/docs/fr-rFR/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Délai d'expiration | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Pas d'interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Pas de canal ou d'autorisation | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Pas de réponse | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Mauvaise requête | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/ga-rIE/user/messages-and-channels.md b/docs/ga-rIE/user/messages-and-channels.md
index b1ee365aa7..8bfc26f53d 100644
--- a/docs/ga-rIE/user/messages-and-channels.md
+++ b/docs/ga-rIE/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Am tráth | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Gan anicéir | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Gan cainéal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Iarratas Mícheart | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/gl-rES/user/messages-and-channels.md b/docs/gl-rES/user/messages-and-channels.md
index 15763e4787..5b5b70afba 100644
--- a/docs/gl-rES/user/messages-and-channels.md
+++ b/docs/gl-rES/user/messages-and-channels.md
@@ -76,13 +76,13 @@ When a message fails to deliver, the error indicator shows what went wrong:
| No Route | No path exists to the destination node | The recipient may be offline or out of mesh range. Try later or move closer. |
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
-| No Interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
-| No Channel | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
-| Bad Request | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
+| No radio interface | No radio interface available to send | Check that your radio is connected and available. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
+| Channel/key mismatch | Destination channel/key does not match | Verify both nodes share the same channel and PSK. |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
+| Invalid request | Malformed or invalid request | Retry after updating or restarting the app if this persists. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/hr-rHR/user/messages-and-channels.md b/docs/hr-rHR/user/messages-and-channels.md
index 677d6ac2a2..fd518430ba 100644
--- a/docs/hr-rHR/user/messages-and-channels.md
+++ b/docs/hr-rHR/user/messages-and-channels.md
@@ -76,13 +76,13 @@ When a message fails to deliver, the error indicator shows what went wrong:
| No Route | No path exists to the destination node | The recipient may be offline or out of mesh range. Try later or move closer. |
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
-| No Interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
-| No Channel | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
-| Bad Request | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
+| No radio interface | No radio interface available to send | Check that your radio is connected and available. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
+| Channel/key mismatch | Destination channel/key does not match | Verify both nodes share the same channel and PSK. |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
+| Invalid request | Malformed or invalid request | Retry after updating or restarting the app if this persists. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/ht-rHT/user/messages-and-channels.md b/docs/ht-rHT/user/messages-and-channels.md
index 9d8ad2ae24..1dcf4b1e2e 100644
--- a/docs/ht-rHT/user/messages-and-channels.md
+++ b/docs/ht-rHT/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Tan pase | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Pa gen entèfas | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Pa gen kanal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Demann move | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/hu-rHU/user/messages-and-channels.md b/docs/hu-rHU/user/messages-and-channels.md
index fbd55af71f..f54dcad651 100644
--- a/docs/hu-rHU/user/messages-and-channels.md
+++ b/docs/hu-rHU/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Időtúllépés | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Nincs Interfész | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Nincs Csatorna | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Hibás kérés | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/is-rIS/user/messages-and-channels.md b/docs/is-rIS/user/messages-and-channels.md
index 9deea9faed..ef34c20534 100644
--- a/docs/is-rIS/user/messages-and-channels.md
+++ b/docs/is-rIS/user/messages-and-channels.md
@@ -76,13 +76,13 @@ When a message fails to deliver, the error indicator shows what went wrong:
| No Route | No path exists to the destination node | The recipient may be offline or out of mesh range. Try later or move closer. |
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
-| No Interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
-| No Channel | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
-| Bad Request | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
+| No radio interface | No radio interface available to send | Check that your radio is connected and available. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
+| Channel/key mismatch | Destination channel/key does not match | Verify both nodes share the same channel and PSK. |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
+| Invalid request | Malformed or invalid request | Retry after updating or restarting the app if this persists. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/it-rIT/user/messages-and-channels.md b/docs/it-rIT/user/messages-and-channels.md
index db72597b59..effd98e416 100644
--- a/docs/it-rIT/user/messages-and-channels.md
+++ b/docs/it-rIT/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Nessuna Interfaccia | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Nessun Canale | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Richiesta Non Valida | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/iw-rIL/user/messages-and-channels.md b/docs/iw-rIL/user/messages-and-channels.md
index a3ea14b35d..ebd0236120 100644
--- a/docs/iw-rIL/user/messages-and-channels.md
+++ b/docs/iw-rIL/user/messages-and-channels.md
@@ -76,13 +76,13 @@ When a message fails to deliver, the error indicator shows what went wrong:
| No Route | No path exists to the destination node | The recipient may be offline or out of mesh range. Try later or move closer. |
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
-| No Interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
-| No Channel | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
-| Bad Request | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
+| No radio interface | No radio interface available to send | Check that your radio is connected and available. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
+| Channel/key mismatch | Destination channel/key does not match | Verify both nodes share the same channel and PSK. |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
+| Invalid request | Malformed or invalid request | Retry after updating or restarting the app if this persists. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/ja-rJP/user/messages-and-channels.md b/docs/ja-rJP/user/messages-and-channels.md
index 5732fe52c0..c9ea0ca0ea 100644
--- a/docs/ja-rJP/user/messages-and-channels.md
+++ b/docs/ja-rJP/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| タイムアウト | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| インターフェースがありません | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| チャンネルがありません | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| 不正な要求 | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/ko-rKR/user/messages-and-channels.md b/docs/ko-rKR/user/messages-and-channels.md
index c2c1f8ab07..940e71d7e1 100644
--- a/docs/ko-rKR/user/messages-and-channels.md
+++ b/docs/ko-rKR/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| 시간 초과 | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| 인터페이스 없음 | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| 채널 없음 | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| 잘못된 요청 | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/lt-rLT/user/messages-and-channels.md b/docs/lt-rLT/user/messages-and-channels.md
index 2d93359787..14fb2e6c9b 100644
--- a/docs/lt-rLT/user/messages-and-channels.md
+++ b/docs/lt-rLT/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Baigėsi laikas | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Nėra sąsajos | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Nėra kanalo | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Bloga užklausa | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/nl-rNL/user/messages-and-channels.md b/docs/nl-rNL/user/messages-and-channels.md
index 3cf1ba7273..d5d4ac138c 100644
--- a/docs/nl-rNL/user/messages-and-channels.md
+++ b/docs/nl-rNL/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Time-Out | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Geen Interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Geen Kanaal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Ongeldige aanvraag | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/no-rNO/user/messages-and-channels.md b/docs/no-rNO/user/messages-and-channels.md
index 962f44e8e9..773fbf2f22 100644
--- a/docs/no-rNO/user/messages-and-channels.md
+++ b/docs/no-rNO/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Tidsavbrudd | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Ingen grensesnitt | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Ingen Kanal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Ugyldig Forespørsel | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/pl-rPL/user/messages-and-channels.md b/docs/pl-rPL/user/messages-and-channels.md
index 041e70f348..1bd945ffb0 100644
--- a/docs/pl-rPL/user/messages-and-channels.md
+++ b/docs/pl-rPL/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Limit czasu | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Brak interfejsu | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Brak kanału | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Brak odpowiedzi | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Złe żądanie | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/pt-rBR/user/messages-and-channels.md b/docs/pt-rBR/user/messages-and-channels.md
index 205b1531e0..770ac358c7 100644
--- a/docs/pt-rBR/user/messages-and-channels.md
+++ b/docs/pt-rBR/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Tempo esgotado | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Sem interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Nenhum canal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Requisição Inválida | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/pt-rPT/user/messages-and-channels.md b/docs/pt-rPT/user/messages-and-channels.md
index c58d957f4c..6b84506390 100644
--- a/docs/pt-rPT/user/messages-and-channels.md
+++ b/docs/pt-rPT/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Sem interface | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Sem canal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Pedido Inválido | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/ro-rRO/user/messages-and-channels.md b/docs/ro-rRO/user/messages-and-channels.md
index 477a787b0d..b14a44921e 100644
--- a/docs/ro-rRO/user/messages-and-channels.md
+++ b/docs/ro-rRO/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Expirat | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Fără interfață | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Niciun canal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Niciun raspuns | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Solicitare invalidă | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/ru-rRU/user/messages-and-channels.md b/docs/ru-rRU/user/messages-and-channels.md
index 8b53a9b28e..b582c95a44 100644
--- a/docs/ru-rRU/user/messages-and-channels.md
+++ b/docs/ru-rRU/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Время ожидания истекло | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Нет интерфейса | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Нет канала | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Без ответа | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Неверный запрос | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/sk-rSK/user/messages-and-channels.md b/docs/sk-rSK/user/messages-and-channels.md
index ba2f09f73a..99a831469a 100644
--- a/docs/sk-rSK/user/messages-and-channels.md
+++ b/docs/sk-rSK/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Časový limit | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Žiadne rozhranie | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Žiaden kanál | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Nesprávna požiadavka | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/sl-rSI/user/messages-and-channels.md b/docs/sl-rSI/user/messages-and-channels.md
index b2136f9256..9dedc0bc80 100644
--- a/docs/sl-rSI/user/messages-and-channels.md
+++ b/docs/sl-rSI/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Časovna omejitev | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Brez vmesnika | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Brez kanala | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Slaba zahteva | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/sq-rAL/user/messages-and-channels.md b/docs/sq-rAL/user/messages-and-channels.md
index bd013352d9..5971870639 100644
--- a/docs/sq-rAL/user/messages-and-channels.md
+++ b/docs/sq-rAL/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Koha e skaduar | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Nuk ka ndërfaqe | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Nuk ka kanal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Kërkesë e gabuar | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/sr-rLatn/user/messages-and-channels.md b/docs/sr-rLatn/user/messages-and-channels.md
index f9b118fa70..e3275bbf5f 100644
--- a/docs/sr-rLatn/user/messages-and-channels.md
+++ b/docs/sr-rLatn/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Isteklo vreme | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Nema interfejsa | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Nema kanala | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Нема одговора | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Loš zahtev | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/srp/user/messages-and-channels.md b/docs/srp/user/messages-and-channels.md
index 111cb6cf4b..4bae271fe4 100644
--- a/docs/srp/user/messages-and-channels.md
+++ b/docs/srp/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Временско ограничење | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Нема интерфејса | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Нема канала | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Нема одговора | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Лош захтев | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/sv-rSE/user/messages-and-channels.md b/docs/sv-rSE/user/messages-and-channels.md
index 2d287067ff..ca1cf97d97 100644
--- a/docs/sv-rSE/user/messages-and-channels.md
+++ b/docs/sv-rSE/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Timeout | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Inget gränssnitt | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Ingen kanal | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Inget svar | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Misslyckad | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/tr-rTR/user/messages-and-channels.md b/docs/tr-rTR/user/messages-and-channels.md
index e602ccbc2b..d3e2c40c5f 100644
--- a/docs/tr-rTR/user/messages-and-channels.md
+++ b/docs/tr-rTR/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Zaman Aşımı | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Arayüz Yok | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Kanal yok | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
-| No Response | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
+| No app response | App or plugin did not respond to the request | Retry or check the destination app or module state. |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Geçersiz İstek | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/uk-rUA/user/messages-and-channels.md b/docs/uk-rUA/user/messages-and-channels.md
index a972f42b7f..24ee2c77c4 100644
--- a/docs/uk-rUA/user/messages-and-channels.md
+++ b/docs/uk-rUA/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| Таймаут | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| Інтерфейс відсутній | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| Канал відсутній | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| Немає відповіді | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| Невірний запит | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/docs/zh-rCN/user/messages-and-channels.md b/docs/zh-rCN/user/messages-and-channels.md
index 7a13b305ae..accab0438f 100644
--- a/docs/zh-rCN/user/messages-and-channels.md
+++ b/docs/zh-rCN/user/messages-and-channels.md
@@ -77,11 +77,11 @@ When a message fails to deliver, the error indicator shows what went wrong:
| Got NAK | The next-hop node refused to relay | The relay node may be congested. Wait and retry. |
| 超时 | No acknowledgment within retry window | The recipient may be just out of range. Try increasing hop limit or moving to a better position. |
| 无连接 | No radio interface available to send | Check that your radio is connected and the channel is configured. |
-| Max Retransmit | All retry attempts exhausted | The mesh path is unreliable. Try a different channel or wait for conditions to improve. |
+| Failed to deliver to mesh | All retry attempts exhausted | Move closer, improve signal, or wait for mesh conditions to improve. |
| 没有频道 | The destination channel doesn't exist | Verify both nodes share the same channel configuration. |
-| Too Large | Message exceeds maximum payload size | Shorten your message (max ~200 characters). |
+| Message is too large to send | Message exceeds maximum payload size | Shorten the message and try again. |
| 无响应 | Node received message but didn't respond | The recipient's radio may be busy or in low-power sleep mode. |
-| Duty Cycle Limit | Regional airtime limit reached | Your radio has used its allowed transmit time. Wait for the duty cycle window to reset (typically 1 hour in EU regions). |
+| Duty cycle limit | Regional airtime limit reached | Wait for the duty cycle window to reset. |
| 错误请求 | Malformed or invalid message | This usually indicates a software bug. Try restarting the app. |
> 💡 **Tip:** Most delivery errors resolve themselves. If a node is intermittently reachable, the mesh will retry. For persistent "No Route" errors, check that intermediate Router nodes are online.
diff --git a/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItem.kt b/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItem.kt
index 1723722d31..8bb7c39856 100644
--- a/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItem.kt
+++ b/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItem.kt
@@ -146,6 +146,7 @@ fun MessageItem(
val isLocal = node.num == ourNode.num
val statusString = message.getStatusStringRes(isDirectMessage)
val isDirectImplicitAck = message.status == MessageStatus.DELIVERED && isDirectMessage
+ val isRetryableFailure = message.status == MessageStatus.ERROR && message.isStatusRetryable(isDirectMessage)
// While searching, always show the original text — FTS matches and highlights apply to it, not the translation.
val showsTranslation = message.showTranslated && message.translatedText != null && searchQuery.isEmpty()
val bodyText = message.displayedText(searching = searchQuery.isNotEmpty())
@@ -395,7 +396,7 @@ fun MessageItem(
status = status,
text = stringResource(statusString.second),
metadataStyle = metadataStyle,
- isWarning = isDirectImplicitAck,
+ isWarning = isDirectImplicitAck || isRetryableFailure,
onStatusClick = onStatusClick,
)
}
diff --git a/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItemPreviews.kt b/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItemPreviews.kt
index cd67d7818b..cb54f863ca 100644
--- a/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItemPreviews.kt
+++ b/feature/messaging/src/commonMain/kotlin/org/meshtastic/feature/messaging/component/MessageItemPreviews.kt
@@ -128,7 +128,7 @@ fun MessageItemStatusStatesPreview() {
),
StatusPreviewMessage(
outgoingStatusPreviewMessage(
- text = "No ACK received",
+ text = "Failed to deliver to mesh",
time = "10:04",
status = MessageStatus.ERROR,
routingError = Routing.Error.MAX_RETRANSMIT.value,
@@ -137,7 +137,7 @@ fun MessageItemStatusStatesPreview() {
),
StatusPreviewMessage(
outgoingStatusPreviewMessage(
- text = "No channel selected",
+ text = "Channel/key mismatch",
time = "10:05",
status = MessageStatus.ERROR,
routingError = Routing.Error.NO_CHANNEL.value,
@@ -146,7 +146,7 @@ fun MessageItemStatusStatesPreview() {
),
StatusPreviewMessage(
outgoingStatusPreviewMessage(
- text = "Encrypted send failed",
+ text = "Could not send encrypted message",
time = "10:06",
status = MessageStatus.ERROR,
routingError = Routing.Error.PKI_FAILED.value,
@@ -173,13 +173,85 @@ fun MessageItemStatusStatesPreview() {
),
StatusPreviewMessage(
outgoingStatusPreviewMessage(
- text = "Too large to send",
+ text = "Message is too large to send",
time = "10:09",
status = MessageStatus.ERROR,
routingError = Routing.Error.TOO_LARGE.value,
node = ourNode,
),
),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "No radio interface",
+ time = "10:10",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.NO_INTERFACE.value,
+ node = ourNode,
+ ),
+ ),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "Duty cycle limit",
+ time = "10:11",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.DUTY_CYCLE_LIMIT.value,
+ node = ourNode,
+ ),
+ ),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "Rate limited",
+ time = "10:12",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.RATE_LIMIT_EXCEEDED.value,
+ node = ourNode,
+ ),
+ ),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "No app response",
+ time = "10:13",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.NO_RESPONSE.value,
+ node = ourNode,
+ ),
+ ),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "Invalid request",
+ time = "10:14",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.BAD_REQUEST.value,
+ node = ourNode,
+ ),
+ ),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "Not authorized",
+ time = "10:15",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.NOT_AUTHORIZED.value,
+ node = ourNode,
+ ),
+ ),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "Admin session expired",
+ time = "10:16",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.ADMIN_BAD_SESSION_KEY.value,
+ node = ourNode,
+ ),
+ ),
+ StatusPreviewMessage(
+ outgoingStatusPreviewMessage(
+ text = "Admin key not authorized",
+ time = "10:17",
+ status = MessageStatus.ERROR,
+ routingError = Routing.Error.ADMIN_PUBLIC_KEY_UNAUTHORIZED.value,
+ node = ourNode,
+ ),
+ ),
)
AppTheme {