From 14b25824ef102ec10e455bdd7d7a0d6e1f7edfb8 Mon Sep 17 00:00:00 2001 From: Eliezer Steinbock <3090527+elie222@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:46:10 +0200 Subject: [PATCH 1/3] adjust logging code --- .../(app)/[emailAccountId]/debug/drafts/page.tsx | 2 +- .../call-analyze-pattern-api.ts | 2 +- apps/web/app/api/outlook/webhook/route.ts | 6 ++---- apps/web/utils/email/bulk-action-tracking.ts | 2 +- apps/web/utils/email/google.ts | 14 ++++++-------- apps/web/utils/email/microsoft.ts | 10 +++++----- apps/web/utils/outlook/batch.ts | 6 +++--- apps/web/utils/outlook/label.ts | 4 ++-- apps/web/utils/outlook/spam.ts | 2 +- apps/web/utils/outlook/trash.ts | 2 +- 10 files changed, 23 insertions(+), 27 deletions(-) diff --git a/apps/web/app/(app)/[emailAccountId]/debug/drafts/page.tsx b/apps/web/app/(app)/[emailAccountId]/debug/drafts/page.tsx index 5b068738e8..d2e75d4f32 100644 --- a/apps/web/app/(app)/[emailAccountId]/debug/drafts/page.tsx +++ b/apps/web/app/(app)/[emailAccountId]/debug/drafts/page.tsx @@ -41,7 +41,7 @@ export default function DebugDraftsPage() { return (
- Drafts + Drafts generated by Inbox Zero {data?.executedActions.length === 0 ? ( diff --git a/apps/web/app/api/ai/analyze-sender-pattern/call-analyze-pattern-api.ts b/apps/web/app/api/ai/analyze-sender-pattern/call-analyze-pattern-api.ts index b3e46f6a29..53568e985d 100644 --- a/apps/web/app/api/ai/analyze-sender-pattern/call-analyze-pattern-api.ts +++ b/apps/web/app/api/ai/analyze-sender-pattern/call-analyze-pattern-api.ts @@ -34,7 +34,7 @@ export async function analyzeSenderPattern(body: AnalyzeSenderPatternBody) { logger.error("Error in sender pattern analysis", { emailAccountId: body.emailAccountId, from: body.from, - error: error instanceof Error ? error.message : error, + error, }); } } diff --git a/apps/web/app/api/outlook/webhook/route.ts b/apps/web/app/api/outlook/webhook/route.ts index 90a12ff0ef..9a5b602b4d 100644 --- a/apps/web/app/api/outlook/webhook/route.ts +++ b/apps/web/app/api/outlook/webhook/route.ts @@ -95,9 +95,7 @@ async function processNotificationsAsync( { watchEmailsSubscriptionId: subscriptionId }, logger, ).catch((error) => { - logger.error("Error getting email account", { - error: error instanceof Error ? error.message : error, - }); + logger.error("Error getting email account", { error }); return null; }); @@ -110,7 +108,7 @@ async function processNotificationsAsync( }); } else { logger.error("Error processing notification (no email account found)", { - error: error instanceof Error ? error.message : error, + error, }); } } diff --git a/apps/web/utils/email/bulk-action-tracking.ts b/apps/web/utils/email/bulk-action-tracking.ts index 4dfa8426c8..ba2bc81caf 100644 --- a/apps/web/utils/email/bulk-action-tracking.ts +++ b/apps/web/utils/email/bulk-action-tracking.ts @@ -88,7 +88,7 @@ export async function updateEmailMessagesForSender(options: { sender, emailAccountId, action, - error: error instanceof Error ? error.message : error, + error, }); // Don't throw - this is analytics, shouldn't break the main flow } diff --git a/apps/web/utils/email/google.ts b/apps/web/utils/email/google.ts index 7aed1e6ee2..0ac2e1bbca 100644 --- a/apps/web/utils/email/google.ts +++ b/apps/web/utils/email/google.ts @@ -294,7 +294,7 @@ export class GmailProvider implements EmailProvider { log.info("Message archived successfully"); } catch (error) { log.error("Failed to archive message", { - error: error instanceof Error ? error.message : error, + error, }); throw error; } @@ -315,9 +315,7 @@ export class GmailProvider implements EmailProvider { }, }); } catch (error) { - log.error("Failed to archive messages bulk", { - error: error instanceof Error ? error.message : error, - }); + log.error("Failed to archive messages bulk", { error }); throw error; } } @@ -394,7 +392,7 @@ export class GmailProvider implements EmailProvider { } catch (error) { log.error("Failed to archive messages from sender", { sender, - error: error instanceof Error ? error.message : error, + error, }); // continue processing remaining pages nextPageToken = undefined; @@ -452,7 +450,7 @@ export class GmailProvider implements EmailProvider { } catch (error) { log.error("Failed to get messages from sender", { sender, - error: error instanceof Error ? error.message : error, + error, }); // continue processing remaining senders nextPageToken = undefined; @@ -471,7 +469,7 @@ export class GmailProvider implements EmailProvider { log.error("Failed to trash thread for sender", { sender, threadId, - error: error instanceof Error ? error.message : error, + error, }); // Continue processing remaining threads } @@ -508,7 +506,7 @@ export class GmailProvider implements EmailProvider { } catch (error) { log.error("Failed to track trash operation for sender", { sender, - error: error instanceof Error ? error.message : error, + error, }); } } diff --git a/apps/web/utils/email/microsoft.ts b/apps/web/utils/email/microsoft.ts index 478bdd8615..cc9762002c 100644 --- a/apps/web/utils/email/microsoft.ts +++ b/apps/web/utils/email/microsoft.ts @@ -115,7 +115,7 @@ export class OutlookProvider implements EmailProvider { } catch (error) { this.logger.error("getThread failed", { threadId, - error: error instanceof Error ? error.message : error, + error, errorCode: (error as any)?.code, }); throw error; @@ -154,7 +154,7 @@ export class OutlookProvider implements EmailProvider { const err = error as any; this.logger.error("getMessage failed", { messageId, - error: error instanceof Error ? error.message : error, + error, errorCode: err?.code, }); throw error; @@ -558,7 +558,7 @@ export class OutlookProvider implements EmailProvider { const err = error as any; this.logger.error("getThreadMessages failed", { threadId, - error: error instanceof Error ? error.message : error, + error, errorCode: err?.code, }); throw error; @@ -932,7 +932,7 @@ export class OutlookProvider implements EmailProvider { this.logger.warn("Failed to fetch thread messages for conversationId", { conversationId, participantEmail, - error: error instanceof Error ? error.message : error, + error, errorCode: (error as any)?.code, errorStatusCode: (error as any)?.statusCode, }); @@ -1484,7 +1484,7 @@ export class OutlookProvider implements EmailProvider { } catch (error) { this.logger.error("Failed to archive message", { messageId, - error: error instanceof Error ? error.message : error, + error, }); throw error; } diff --git a/apps/web/utils/outlook/batch.ts b/apps/web/utils/outlook/batch.ts index 6f595799ba..acad6df22a 100644 --- a/apps/web/utils/outlook/batch.ts +++ b/apps/web/utils/outlook/batch.ts @@ -92,7 +92,7 @@ async function batch({ logger.error("Graph batch request failed", { ...context, chunkSize: chunk.length, - error: error instanceof Error ? error.message : error, + error, }); throw error; } @@ -275,7 +275,7 @@ export async function moveMessagesForSenders({ ownerEmail, destinationId, messageIds, - error: error instanceof Error ? error.message : error, + error, }); } finally { messageIds.forEach((id) => processedMessageIds.add(id)); @@ -291,7 +291,7 @@ export async function moveMessagesForSenders({ logger.error("Failed to fetch messages from sender", { sender, action, - error: error instanceof Error ? error.message : error, + error, }); nextLink = undefined; } diff --git a/apps/web/utils/outlook/label.ts b/apps/web/utils/outlook/label.ts index 85b295e321..f4f28be41f 100644 --- a/apps/web/utils/outlook/label.ts +++ b/apps/web/utils/outlook/label.ts @@ -280,7 +280,7 @@ export async function removeThreadLabel({ messageId: message.id, threadId, categoryName, - error: error instanceof Error ? error.message : error, + error, }); } }, @@ -351,7 +351,7 @@ export async function archiveThread({ folderId, messageId: message.id, threadId, - error: error instanceof Error ? error.message : error, + error, }); return null; } diff --git a/apps/web/utils/outlook/spam.ts b/apps/web/utils/outlook/spam.ts index 3c930eae70..40e3aad361 100644 --- a/apps/web/utils/outlook/spam.ts +++ b/apps/web/utils/outlook/spam.ts @@ -29,7 +29,7 @@ export async function markSpam(client: OutlookClient, threadId: string) { logger.warn("Failed to move message to spam", { messageId: message.id, threadId, - error: error instanceof Error ? error.message : error, + error, }); return null; } diff --git a/apps/web/utils/outlook/trash.ts b/apps/web/utils/outlook/trash.ts index 4265d5b25c..5457c861e7 100644 --- a/apps/web/utils/outlook/trash.ts +++ b/apps/web/utils/outlook/trash.ts @@ -37,7 +37,7 @@ export async function trashThread(options: { logger.warn("Failed to move message to trash", { messageId: message.id, threadId, - error: error instanceof Error ? error.message : error, + error, }); return null; } From 946ad43f7dde2131bd05f436b9e76d2f5feadc67 Mon Sep 17 00:00:00 2001 From: Eliezer Steinbock <3090527+elie222@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:57:02 +0200 Subject: [PATCH 2/3] adjust logging for microsoft --- apps/web/utils/email/microsoft.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/apps/web/utils/email/microsoft.ts b/apps/web/utils/email/microsoft.ts index cc9762002c..ad31a0d911 100644 --- a/apps/web/utils/email/microsoft.ts +++ b/apps/web/utils/email/microsoft.ts @@ -420,6 +420,7 @@ export class OutlookProvider implements EmailProvider { } if (!category) { + this.logger.error("Category not found", { labelId }); throw new Error( `Category with ID ${labelId}${labelName ? ` or name ${labelName}` : ""} not found`, ); @@ -442,6 +443,11 @@ export class OutlookProvider implements EmailProvider { messageId, categories: updatedCategories, }); + this.logger.info("Label applied", { labelId: category.id }); + } else { + this.logger.info("Label already present, skipped", { + labelId: category.id, + }); } return { @@ -474,9 +480,11 @@ export class OutlookProvider implements EmailProvider { logger: this.logger, }), ]); + this.logger.info("Draft created", { draftId: result.id }); return { draftId: result.id || "" }; } else { const result = await draftEmail(this.client, email, args, userEmail); + this.logger.info("Draft created", { draftId: result.id }); return { draftId: result.id || "" }; } } @@ -788,12 +796,14 @@ export class OutlookProvider implements EmailProvider { nextPageToken?: string; }> { this.logger.info("getMessagesWithPagination called", { - query: options.query, maxResults: options.maxResults, pageToken: options.pageToken, before: options.before?.toISOString(), after: options.after?.toISOString(), }); + this.logger.trace("getMessagesWithPagination query", { + query: options.query, + }); // For Outlook, separate search queries from date filters // Microsoft Graph API handles these differently @@ -808,19 +818,14 @@ export class OutlookProvider implements EmailProvider { dateFilters.push(`receivedDateTime gt ${options.after.toISOString()}`); } - this.logger.info("Query parameters separated", { - originalQuery, - dateFilters, - hasSearchQuery: !!originalQuery.trim(), - hasDateFilters: dateFilters.length > 0, - }); - this.logger.info("Calling queryBatchMessages with separated parameters", { - searchQuery: originalQuery.trim() || undefined, dateFilters, maxResults: options.maxResults || 20, pageToken: options.pageToken, }); + this.logger.trace("Search query", { + searchQuery: originalQuery.trim() || undefined, + }); // Don't pass folderId - let the API return all folders except Junk/Deleted (auto-excluded) // Drafts are filtered out in convertMessages From c629b3174760999dd0569af50746ec3deaccfafa Mon Sep 17 00:00:00 2001 From: Eliezer Steinbock <3090527+elie222@users.noreply.github.com> Date: Tue, 16 Dec 2025 20:57:42 +0200 Subject: [PATCH 3/3] v2.23.3 --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 1a09cfd62a..ec89d50dfe 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -v2.23.2 +v2.23.3