-
Notifications
You must be signed in to change notification settings - Fork 223
Comparing changes
Open a pull request
base repository: postalsys/emailengine
base: v2.72.1
head repository: postalsys/emailengine
compare: v2.72.2
- 7 commits
- 25 files changed
- 2 contributors
Commits on Jun 20, 2026
-
test: add unit coverage for autodetect-imap-settings and get-raw-email
Both modules previously had zero test coverage. get-raw-email (61 cases across both files): - raw-message path: Date/MIME-Version/Message-ID injection, X-EE-* control-header extraction and stripping, from/to/cc/bcc overrides, BCC detection, envelope computation, license X-Ee-Sid header, and the returnObject (simpleParser) variant. - compose path: MailComposer envelope/messageId, preview-text injection, message/rfc822 as-is embedding with 7bit/8bit detection, returnObject. - removeBcc header stripping. autodetect-imap-settings: - pure helpers escapeXml, getAppPassword, processAutoconfigFile (now exported for testing - no new production caller). - MX -> provider mapping table and Gmail/SRV resolution via mocked DNS, staying off the HTTP fallback path so the tests stay hermetic.
Configuration menu - View commit details
-
Copy full SHA for ecc15db - Browse repository at this point
Copy the full SHA ecc15dbView commit details -
test: add unit coverage for smtp pooling, scan-delete, text rewriting…
… and notifications Four previously-untested modules, 51 cases total: - redis-scan-delete: blast-radius safety (deletes only keys matching the glob, leaves siblings like acct:10:* intact when deleting acct:1:*), zero-match no-op, accurate count across the pipeline batch boundary, and scan-stream error rejection. - smtp-pool-manager: pool-key isolation - the SHA256 key is sensitive to every connection-identity field (esp. auth, so credentials never collapse to a shared transport), order-independent, ignores non-identity fields; plus getMailTransport reuse/create and closePooledConnection. Exposes generatePoolKey for testing. - rewrite-text-nodes: which nodes get rewritten (attachments and embedded message/rfc822 parts are skipped), charset decode to UTF-8 before the rewriter runs, and non-string rewriter results keep the original body. - notification-handler: buildPayload assembly, buildJobOptions retention + no mutation of shared base options, shouldSyncDocuments gating short-circuits, postMetrics graceful degradation, generateThreadId early-returns.
Configuration menu - View commit details
-
Copy full SHA for 05c5e28 - Browse repository at this point
Copy the full SHA 05c5e28View commit details
Commits on Jun 21, 2026
-
Configuration menu - View commit details
-
Copy full SHA for fcca903 - Browse repository at this point
Copy the full SHA fcca903View commit details
Commits on Jun 23, 2026
-
fix: resume sync after OAuth re-auth and enable Run sync for Gmail/Ou…
…tlook Re-authorizing an account that is in authenticationError or connectError now triggers a reconnect automatically, so syncing resumes without a manual Reconnect. The reconnect is gated on the account being in an error state and on the credentials actually changing, so routine hourly token renewal never triggers reconnects (and the reconnect-time state is "connecting", so it cannot loop). The "Run sync" action (PUT /v1/account/{account}/sync) was a no-op for Gmail and Outlook accounts because only the IMAP client implemented syncMailboxes(). Both API clients now implement it: Gmail runs a history-delta catch-up via triggerSync, Outlook refreshes the folder cache and runs missed-message recovery (cooldown bypassed for the explicit action; per-message dedup is unchanged, so no duplicate notifications). Also corrects the auth-disable threshold in CLAUDE.md (3 days, not 4 hours).Configuration menu - View commit details
-
Copy full SHA for f3bef82 - Browse repository at this point
Copy the full SHA f3bef82View commit details
Commits on Jun 25, 2026
-
fix: reconnect error-state accounts after OAuth re-auth via create()
The interactive OAuth re-authorization flow (admin UI consent -> redirect callback -> Account.create()) did not resume syncing for an account that was in authenticationError/connectError state. create()'s existing-account branch issued cmd:'update', which reconnects the existing client instance in place; that cannot switch client type (IMAP <-> API) and is a no-op against a torn-down connection, so the account stayed dead until a manual Reconnect. create() now dispatches cmd:'reconnect' (full close + re-assign of a fresh, correct-type client) when the account was in an error state, mirroring the gate already present in Account.update(). The dispatch is wrapped in try/catch so a transient worker failure cannot turn an already-persisted re-auth into a 500; update()'s reconnect dispatch is wrapped the same way for consistency. The error-state set is extracted to a shared ERROR_STATES constant. Adds unit coverage for the create() gate (error states reconnect; connected/ unset/paused keep update; new accounts unaffected; swallowed dispatch failure; provider-agnostic IMAP case) plus an update() dispatch-failure case.
Configuration menu - View commit details
-
Copy full SHA for 77cee1e - Browse repository at this point
Copy the full SHA 77cee1eView commit details
Commits on Jun 26, 2026
-
fix: update dependencies (libmime 5.4.0, mailparser 3.9.12, imapflow …
…1.4.3, email-ai-tools 1.13.9)
Configuration menu - View commit details
-
Copy full SHA for 8c999d8 - Browse repository at this point
Copy the full SHA 8c999d8View commit details -
chore(master): release 2.72.2 (#610)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for bdcd0b6 - Browse repository at this point
Copy the full SHA bdcd0b6View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v2.72.1...v2.72.2