# 25-Jul-2026 — Safer Gmail reprocessing and restored sent history [#278](https://github.com/nbarrett/ngx-ramblers/issues/278)

## [build 792](https://github.com/nbarrett/ngx-ramblers/actions/runs/30160946191) — [commit 60175c0](https://github.com/nbarrett/ngx-ramblers/commit/60175c08b75f8432d1a2ad1fd662506e7fd2fa70)

_____

## What's new

Gmail inbox import no longer stops when a message cannot supply a clear external sender — for example mail in the general mailbox whose From address is the connected Gmail account or another internal role. The conversation's external party is resolved from From, then To or Cc, with a safe fallback so the thread can still be stored.

Re-scan no longer wipes existing general-mailbox conversations. It only pulls in messages that are not already in NGX, and it leaves each member's read or unread state alone. Filling in older missing messages on a conversation does not mark the thread unread again for everyone.

The Connected Gmail accounts panel also shows a clearer status summary: whether mail is importing, delivery mode, last successful sync time, how many role mailboxes are mapped, import scope, and a plain-language last error with next steps.

## At a glance

- Gmail sync no longer fails with "externalAddress is required" for internal-From or general-mailbox messages
- Reprocessing only adds missing messages and does not wipe existing conversations
- Reprocessing no longer marks conversations unread again for all members
- Status on each connected Gmail account shows import health, last successful sync, mapped roles and what to do if import has stopped

### **inbox+email**: restore sent history and improve conversation browsing ([#278](https://github.com/nbarrett/ngx-ramblers/issues/278))

## What's new

The inbox now repairs missing outbound history from Email Composer. Refreshing a connected mailbox finds recent sent compositions that were not recorded as inbox messages, rebuilds eligible messages with their original sender, recipients, copied recipients, subject, body, attachments and send time, and places them into the correct conversation. Existing repaired messages receive the latest email-safe rendering without being duplicated.

Long inboxes can load additional conversations in pages of fifty. Refresh synchronises each connected mailbox before reloading the visible list, timestamps include seconds for easier reconciliation, and tables and quoted content retain readable styling in previews and delivered email.

## At a glance

- Recent Email Composer sends missing from the inbox are restored from their saved sent compositions.
- Reconciliation recognises previously repaired compositions and updates their rendered body rather than creating duplicate conversations.
- Recovered messages keep their original send time, and an older message cannot move a conversation ahead of genuinely newer activity.
- Tables, block quotes and inline images use self-contained email-safe styling that survives preview frames and email-client CSS restrictions.
- Inbox refresh actively synchronises all connected Gmail mailboxes before displaying the latest conversations.
- A **Show next** action loads further conversations while keeping the messages already visible.