Skip to content

Fix Exo window resume speed and duplicate sync initialization - #195

Open
mickn wants to merge 3 commits into
ankitvgupta:mainfrom
mickn:codex/window-resume-upstream
Open

Fix Exo window resume speed and duplicate sync initialization#195
mickn wants to merge 3 commits into
ankitvgupta:mainfrom
mickn:codex/window-resume-upstream

Conversation

@mickn

@mickn mickn commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

What this fixes

Closing Exo's last macOS window could destroy the renderer, so Dock activation recreated the app from scratch, losing navigation state, and re-ran account initialization—all resulting in having to re-select the original mailbox, and having to wait 10+ seconds before the app was usable again. Repeated initialization could also replace account records without clearing old interval handles.

Changes

  • Hide the last macOS window on normal close and reuse it on activation; intentional app quit still closes normally.
  • Coalesce concurrent sync:init calls and reuse healthy main-process Gmail clients.
  • Clear replaced sync intervals and coalesce overlapping account syncs.
  • Persist and validate a compact navigation snapshot for genuine renderer loss or restart.
  • Add lifecycle, navigation, and Electron resume regression coverage plus diagnostic counters.

Verification

  • npm run build
  • Node and renderer TypeScript checks
  • Focused lifecycle/navigation tests
  • 1,461 unit cases green (localhost-binding tests rerun with required permission)
  • Native Electron E2E confirms the same webContents survives close → activation

This branch is rebased onto ankitvgupta/exo main at 5c22a58.

@mickn mickn changed the title Fix Exo window resume and duplicate sync initialization Fix Exo window resume speed and duplicate sync initialization Aug 7, 2026
@mickn
mickn marked this pull request as ready for review August 7, 2026 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant