Skip to content

Commit 6ee29ae

Browse files
staticoclaude
andcommitted
Allow retrying timed-out messages (status=pending)
The retry handlers only checked for status === "error", but timed-out messages have status === "pending" (they never received an explicit error response, just exceeded the 30s timeout). Fixed both chat and DM retry handlers to allow retrying messages that are either: 1. status === "error" (explicit failure with error reason) 2. status === "pending" AND elapsed > 30000ms (timed out) This matches the UI behavior where timed-out messages display [✗ timeout]. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent a6bfcc7 commit 6ee29ae

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

src/ui/App.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2210,8 +2210,12 @@ export function App({ address, packetStore, nodeStore, skipConfig = false, skipN
22102210
// 'R' to resend failed message
22112211
if (input === "R") {
22122212
const selectedMsg = filteredMessages[selectedChatMessageIndex];
2213-
if (selectedMsg && selectedMsg.fromNode === myNodeNum && selectedMsg.status === "error") {
2214-
resendMessage(selectedMsg);
2213+
if (selectedMsg && selectedMsg.fromNode === myNodeNum) {
2214+
const elapsed = Date.now() - selectedMsg.timestamp * 1000;
2215+
const isTimedOut = selectedMsg.status === "pending" && elapsed > 30000;
2216+
if (selectedMsg.status === "error" || isTimedOut) {
2217+
resendMessage(selectedMsg);
2218+
}
22152219
}
22162220
return;
22172221
}
@@ -2340,8 +2344,12 @@ export function App({ address, packetStore, nodeStore, skipConfig = false, skipN
23402344
// 'R' to resend failed message
23412345
if (input === "R" && dmMessages[selectedDMMessageIndex]) {
23422346
const msg = dmMessages[selectedDMMessageIndex];
2343-
if (msg.fromNode === myNodeNum && msg.status === "error") {
2344-
resendMessage(msg);
2347+
if (msg.fromNode === myNodeNum) {
2348+
const elapsed = Date.now() - msg.timestamp * 1000;
2349+
const isTimedOut = msg.status === "pending" && elapsed > 30000;
2350+
if (msg.status === "error" || isTimedOut) {
2351+
resendMessage(msg);
2352+
}
23452353
}
23462354
return;
23472355
}

0 commit comments

Comments
 (0)