From 49dbf79c28aab1b24c4b5b348c22db36f58109fc Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Sun, 1 Feb 2026 10:16:19 -0500 Subject: [PATCH 1/2] fix: do not send error report for `x_runJob_indexMessages_Timeout` but increase timeout for subsequent tries (up to 1 minute) --- src/renderer/src/i18n/locales/en.json | 1 + .../src/view_models/XViewModel/jobs_index.ts | 22 +++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/i18n/locales/en.json b/src/renderer/src/i18n/locales/en.json index 51f8654b..99437083 100644 --- a/src/renderer/src/i18n/locales/en.json +++ b/src/renderer/src/i18n/locales/en.json @@ -577,6 +577,7 @@ "archiveTweets": "# I'm downloading HTML copies of your tweets, starting with the oldest.\n\nThis may take a while...", "conversations": "# I'm saving your direct message conversations.\n\nHang on while I scroll down to your earliest direct message conversations...", "messages": "# I'm saving your direct messages.\n\nPlease wait while I index all the messages from each conversation...", + "messagesTimeoutError": "Unable to load a conversation. This appears to be an issue on X's side. The conversation will be skipped. You can try again later if needed.", "likes": "# I'm saving your likes.\n\nHang on while I scroll down to your earliest likes.", "bookmarks": "# I'm saving your bookmarks.\n\nHang on while I scroll down to your earliest bookmarks." }, diff --git a/src/renderer/src/view_models/XViewModel/jobs_index.ts b/src/renderer/src/view_models/XViewModel/jobs_index.ts index 9967bcbb..ea742cf9 100644 --- a/src/renderer/src/view_models/XViewModel/jobs_index.ts +++ b/src/renderer/src/view_models/XViewModel/jobs_index.ts @@ -409,7 +409,13 @@ export async function runJobIndexMessages(vm: XViewModel, jobIndex: number) { try { url = `https://x.com/messages/${indexMessagesStartResponse.conversationIDs[i]}`; await vm.loadURLWithRateLimit(url); - await vm.waitForSelector('div[data-testid="DmActivityContainer"]', url); + // Use longer timeout on retries (60 seconds instead of default 30 seconds) + const timeout = tries > 0 ? 60000 : undefined; + await vm.waitForSelector( + 'div[data-testid="DmActivityContainer"]', + url, + timeout, + ); success = true; break; } catch (e) { @@ -457,9 +463,17 @@ export async function runJobIndexMessages(vm: XViewModel, jobIndex: number) { } if (!success) { - await vm.error(AutomationErrorType.x_runJob_indexMessages_Timeout, { - error: formatError(error as Error), - }); + // Instead of submitting an error report, show a user-friendly message + // and skip this conversation for now. + await window.electron.showError( + vm.t("viewModels.x.jobs.index.messagesTimeoutError"), + ); + vm.log("runJobIndexMessages", [ + "conversation timed out after 3 retries, skipping it", + ]); + vm.progress.conversationMessagesIndexed += 1; + await vm.syncProgress(); + shouldSkip = true; } if (shouldSkip) { From c79171183f40cfc76ac56095e0ee01fce674ca68 Mon Sep 17 00:00:00 2001 From: redshiftzero Date: Sun, 1 Feb 2026 10:34:23 -0500 Subject: [PATCH 2/2] fix: remove error assignment since no longer used --- src/renderer/src/view_models/XViewModel/jobs_index.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/renderer/src/view_models/XViewModel/jobs_index.ts b/src/renderer/src/view_models/XViewModel/jobs_index.ts index ea742cf9..c8a576bb 100644 --- a/src/renderer/src/view_models/XViewModel/jobs_index.ts +++ b/src/renderer/src/view_models/XViewModel/jobs_index.ts @@ -356,9 +356,7 @@ export async function runJobIndexMessages(vm: XViewModel, jobIndex: number) { navigator.userAgent, ); - let tries: number, - success: boolean, - error: null | Error = null; + let tries: number, success: boolean; let indexMessagesStartResponse: XIndexMessagesStartResponse; let url = ""; @@ -428,7 +426,6 @@ export async function runJobIndexMessages(vm: XViewModel, jobIndex: number) { if (vm.rateLimitInfo.isRateLimited) { await vm.waitForRateLimit(); } else { - error = e; vm.log("runJobIndexMessages", [ "loading conversation and waiting for messages failed, try #", tries, @@ -452,7 +449,6 @@ export async function runJobIndexMessages(vm: XViewModel, jobIndex: number) { ); break; } else { - error = e as Error; vm.log("runJobIndexMessages", [ "loading conversation and waiting for messages failed, try #", tries,