diff --git a/CHANGELOG.md b/CHANGELOG.md index 79508b9..73474cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Convert `frontend/jest.config.js` to `jest.config.mjs` using ES module `import`/`export` syntax to resolve ESLint `@typescript-eslint/no-require-imports` error. +- Suppress noisy `ignored untagged response` INFO log lines from `aioimaplib` in Celery workers by setting the `aioimaplib` logger to WARNING level in `celery_app.py`. +- Eliminate `file_cache is only supported with oauth2client<4.0.0` warnings by passing `cache_discovery=False` to `googleapiclient.discovery.build()` in `gmail_service.py`. ## v0.5.0 (2026-03-28) diff --git a/backend/app/services/gmail_service.py b/backend/app/services/gmail_service.py index 48a4149..e848ae2 100644 --- a/backend/app/services/gmail_service.py +++ b/backend/app/services/gmail_service.py @@ -84,7 +84,9 @@ class GmailService: def service(self): """Lazy-initialize the Gmail API service.""" if self._service is None: - self._service = build("gmail", "v1", credentials=self.credentials) + self._service = build( + "gmail", "v1", credentials=self.credentials, cache_discovery=False + ) return self._service async def inject_email( diff --git a/backend/app/workers/celery_app.py b/backend/app/workers/celery_app.py index b59609d..9ae8dc7 100644 --- a/backend/app/workers/celery_app.py +++ b/backend/app/workers/celery_app.py @@ -10,6 +10,9 @@ from app.core.config import settings logger = logging.getLogger(__name__) +# Suppress noisy INFO-level "ignored untagged response" messages from aioimaplib +logging.getLogger("aioimaplib").setLevel(logging.WARNING) + # Create Celery app celery_app = Celery( "inboxconverge", diff --git a/docs/TODO.md b/docs/TODO.md index 155921b..e5b03a4 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -4,6 +4,7 @@ Comprehensive task breakdown for repository improvements and production readines ## ✅ Recently Completed +- [x] **Log noise reduction**: Suppressed `ignored untagged response` INFO messages from `aioimaplib` in Celery workers (set logger to WARNING). Eliminated repeated `file_cache is only supported with oauth2client<4.0.0` warnings from the Gmail API client by passing `cache_discovery=False` to `googleapiclient.discovery.build()`. - [x] **ESLint fix**: Converted `frontend/jest.config.js` to `jest.config.mjs` (ES module syntax) to resolve `@typescript-eslint/no-require-imports` lint error. - [x] **Codecov integration**: Added Codecov coverage reporting with `CODECOV_TOKEN` authentication. Set up Jest for frontend tests with lcov coverage, updated CI to collect and upload both backend (XML via pytest-cov) and frontend (lcov via Jest) coverage reports to Codecov with separate `backend` and `frontend` flags. - [x] **IMAP: fix all emails appearing empty** — `aioimaplib` stores RFC822 literal data as `bytearray`, not `bytes`. The extraction loop was checking `isinstance(line, bytes)` which returns `False` for `bytearray`, so every email body was silently skipped. Fixed to accept both types and convert to `bytes`. Affected T-Online, GMX, and all IMAP accounts.