Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: postalsys/emailengine
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.72.1
Choose a base ref
...
head repository: postalsys/emailengine
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.72.2
Choose a head ref
  • 7 commits
  • 25 files changed
  • 2 contributors

Commits on Jun 20, 2026

  1. 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.
    andris9 committed Jun 20, 2026
    Configuration menu
    Copy the full SHA
    ecc15db View commit details
    Browse the repository at this point in the history
  2. 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.
    andris9 committed Jun 20, 2026
    Configuration menu
    Copy the full SHA
    05c5e28 View commit details
    Browse the repository at this point in the history

Commits on Jun 21, 2026

  1. Configuration menu
    Copy the full SHA
    fcca903 View commit details
    Browse the repository at this point in the history

Commits on Jun 23, 2026

  1. 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).
    andris9 committed Jun 23, 2026
    Configuration menu
    Copy the full SHA
    f3bef82 View commit details
    Browse the repository at this point in the history

Commits on Jun 25, 2026

  1. 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.
    andris9 committed Jun 25, 2026
    Configuration menu
    Copy the full SHA
    77cee1e View commit details
    Browse the repository at this point in the history

Commits on Jun 26, 2026

  1. fix: update dependencies (libmime 5.4.0, mailparser 3.9.12, imapflow …

    …1.4.3, email-ai-tools 1.13.9)
    andris9 committed Jun 26, 2026
    Configuration menu
    Copy the full SHA
    8c999d8 View commit details
    Browse the repository at this point in the history
  2. chore(master): release 2.72.2 (#610)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Jun 26, 2026
    Configuration menu
    Copy the full SHA
    bdcd0b6 View commit details
    Browse the repository at this point in the history
Loading