Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 22:36
· 9 commits to main since this release

Добавлено

  • Gmail API-коннектор — альтернатива IMAP для Google-аккаунтов: синхронизация через
    нативный Gmail REST API вместо IMAP-протокола, с дельта-синхронизацией по Gmail
    History API (обычный полный обход применяется только на первом запуске или если
    курсор истории устарел). Вся почта (кроме Спама/Корзины) архивируется в единую папку
    «All Mail» — у Gmail нет папок в IMAP-смысле, только метки, а одно письмо может
    одновременно носить несколько меток. Правила архивации работают как обычно:
    archive_and_mark_read снимает метку UNREAD, archive_and_delete перемещает письмо
    в Корзину Gmail (обратимо 30 дней). Создать такой аккаунт можно через
    POST /api/v1/accounts/oauth2 с "connector_type": "gmail_api" (нужен OAuth2-токен
    с scope https://www.googleapis.com/auth/gmail.modify, не тем же, что используется
    для IMAP) — отдельной формы в Web UI для этого пока нет, добавление IMAP-аккаунтов
    через интерфейс не изменилось.

Исправлено

  • OAuth2 IMAP-аккаунты (Google/Microsoft через IMAP, не Gmail API-коннектор выше) не
    синхронизировались вообще: все реальные точки запуска синхронизации (планировщик,
    CLI marchi sync, обе версии «Проверить подключение» — JSON API и Web UI) безусловно
    расшифровывали IMAP-пароль, даже если у аккаунта его никогда не было (OAuth2-аккаунт
    хранит только токен). В результате попытка синхронизации падала на расшифровке до
    реального подключения — internal/account.Manager.ResolveIMAPAuth (резолвинг и, если
    нужно, обновление токена) существовал с Фазы 3, но фактически вызывался только из
    восстановления писем. Теперь все четыре места используют ResolveIMAPAuth, а
    internal/sync.SyncAccount принимает и пароль, и OAuth2 access token, передавая в
    IMAP-клиент то, что реально применимо к аккаунту.

Полный список изменений: v0.7.0...v0.8.0