copilot-swe-agent[bot]
92f60c6052
fix: retry POP3/IMAP, DNS 8.8.8.8 fallback, debug counter, notification backoff
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/5ad49738-4b0b-4ed7-8686-07adb0ba9e5d
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-05-03 22:06:12 +00:00
copilot-swe-agent[bot]
45a2dd8be2
fix: IPv4 preference + DNS cache fallback for stable POP3/IMAP connections
...
- Add DNS_CACHE_FALLBACK_ENABLED setting (default: true)
- Add in-process DNS cache (_dns_cache, _dns_cache_lock, _get/_set_cached_ipv4)
- Add _resolve_ipv4 (async) and _resolve_ipv4_sync: AF_INET lookup, cache on
success, return cached IP on EAI_AGAIN when fallback enabled
- Add _IMAP4SSLwithSNI: connects to pre-resolved IPv4 but uses original
hostname for TLS SNI/cert verification
- Add _POP3SSLWithIPv4Pref / _POP3WithIPv4Pref: override _create_socket to
use pre-resolved IPv4 while keeping original host for POP3_SSL SNI
- Add _make_pop3_conn factory and _make_imap_client async factory
- Wire IPv4/cache helpers into all 6 connection call-sites (IMAP x3, POP3 x3)
- Distinguish transient DNS (EAI_AGAIN) from permanent in _format_connection_error
- Replace asyncio.get_event_loop() with get_running_loop() in 4 async sites
- All 75 existing unit tests pass unchanged
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/be0a3bbd-1af1-408e-b918-84753723154b
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-05-03 20:49:51 +00:00
copilot-swe-agent[bot]
aab60d6866
feat: frontend clear-error button, debug trace viewer, debug_logging toggle, docs updates
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/5d2918de-630e-4a66-8355-1b036c620b1c
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-05-03 18:53:52 +00:00
copilot-swe-agent[bot]
78610ef09d
feat: add English privacy policy, ToS, and legal footer links for Google OAuth verification
...
- Add /privacy (English privacy policy with Google API Limited Use Disclosure)
- Add /terms (English Terms of Service)
- Fix home page footer: add Privacy Policy, Terms, Impressum, Datenschutz links
(directly resolves Google verification rejection: "homepage has no privacy link")
- Update login page footer to include /privacy and /terms
- Add register page consent text linking to /privacy and /terms
- Add /privacy cross-link in German /datenschutz page (section 2 + footer)
- Update CHANGELOG.md and docs/TODO.md
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/6800713f-ba49-421c-9e96-08d8ed6e48e4
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-04-18 17:22:50 +00:00
Christian Krakau-Louis
b8aec18add
Merge pull request #172 from christianlouis/copilot/fix-deprecated-pydantic-methods
...
fix: replace deprecated Pydantic .dict() with .model_dump() and fix db.add() AsyncMock warnings
2026-04-07 12:44:37 +02:00
copilot-swe-agent[bot]
31dc059274
fix: replace deprecated .dict() with .model_dump() and fix db.add() AsyncMock warnings
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/ac39d3f7-d4c3-4417-8c33-8e6340a27281
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-04-07 10:38:27 +00:00
Christian Krakau-Louis
4c6fc339d2
Merge branch 'main' into copilot/ensure-full-test-coverage
2026-04-07 12:28:35 +02:00
copilot-swe-agent[bot]
58f9ad72ed
test: add 150 new unit tests covering auth, users, notifications, logs, settings, GDPR, and Gmail label utilities
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/8cb47b1c-b744-4212-8b6d-8132d6642d98
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-04-05 15:10:38 +00:00
copilot-swe-agent[bot]
a5920937cb
docs: update TODO.md with gmail_service test coverage entry
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/250e0731-baa3-40c5-bc19-a4102475dac2
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 01:04:55 +00:00
copilot-swe-agent[bot]
8eff0833fa
test: expand api.ts test coverage with 56 new tests for all API objects
...
Add comprehensive tests for all 10 exported API objects: authApi,
userApi, mailAccountsApi, processingRunsApi, gmailApi, smtpApi,
adminApi, notificationsApi, adminNotificationsApi, and versionApi.
Each method is tested for correct HTTP method, URL, parameters/data,
and return value. Total api.test.ts tests: 65 (up from 9).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:58:20 +00:00
copilot-swe-agent[bot]
d79f9caf9e
Add comprehensive tests for AddMailAccountModal component
...
28 tests covering:
- Create/edit mode rendering and titles
- Provider wizard flow (select, manual, back)
- Form field changes, username/email sync, checkboxes
- Auto-detect success, failure, and validation
- Test connection success, error, validation, existing account
- Submit mutations (create/update, password omission)
- Modal close interactions (X, backdrop, cancel)
- Saving state indicators
- Error message extraction (string, array, Error)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:54:28 +00:00
copilot-swe-agent[bot]
4d1451ecde
test: add 23 unit tests for provider endpoints
...
Cover all 9 endpoints in providers.py:
- Provider presets (list all, get by ID, not found)
- Gmail credential CRUD (create, update, get, delete)
- Import labels update
- Gmail authorize URL (success, not configured)
- Debug email (success, no credentials, injection failure)
- OAuth callback (new/update cred, not configured, token exchange
failure, missing access token, verification failure)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:45:50 +00:00
copilot-swe-agent[bot]
65318b8c1b
Add unit tests for mail account endpoints (30 tests)
...
Comprehensive test coverage for backend/app/api/v1/endpoints/mail_accounts.py:
- CRUD operations (create, list, get, update, delete)
- Subscription limit enforcement and superuser bypass
- Account toggle with ERROR→ACTIVE status reset
- Pull-now with disabled account guard
- Test connection (new and existing) with decrypt failure handling
- Auto-detect mail settings
- Paginated processing runs and logs
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:37:44 +00:00
copilot-swe-agent[bot]
4d07d04c63
Add comprehensive unit tests for auth endpoints
...
22 tests covering:
- Helper functions (_domain_of, _check_domain_allowed, _default_tier, _is_admin_email)
- POST /register (success, duplicate email, domain restriction)
- POST /login (success, user not found, wrong password, inactive, admin auto-promotion)
- POST /google (existing user, new user, unverified email, domain restriction)
- GET /google/authorize-url (correct URL construction)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:30:38 +00:00
Christian Krakau-Louis
815629910b
Merge branch 'main' into copilot/improve-test-coverage-tasks
2026-03-29 01:15:40 +01:00
Christian Krakau-Louis
ddad290e82
Merge branch 'main' into copilot/improve-test-coverage-tasks
2026-03-29 01:11:22 +01:00
Christian Krakau-Louis
3cd7a781f6
Merge branch 'main' into copilot/improve-test-coverage-admin-file
2026-03-29 01:10:45 +01:00
Christian Krakau-Louis
aa754bf217
Merge branch 'main' into copilot/improve-frontend-test-coverage
2026-03-29 01:10:01 +01:00
copilot-swe-agent[bot]
da9d822afa
Add 87 unit tests for admin endpoints (24% → 100% coverage), fix conftest.py fixtures
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/d17e4b46-03fd-450a-af61-1870011377b4
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:06:02 +00:00
copilot-swe-agent[bot]
769907a65b
feat: add NotificationWizard + ProviderWizard tests, fix lint, update docs
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/6b527e29-8e26-4f86-88e2-847687f759ad
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:05:38 +00:00
copilot-swe-agent[bot]
983ce75264
Add 40 unit tests for backend/app/workers/tasks.py (9% → 96% coverage)
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/519609d2-8cd4-44e8-96b0-4e9aaa76b45a
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:04:40 +00:00
copilot-swe-agent[bot]
eb47594e53
Add 46 unit tests for mail_processor.py: POP3, forwarding, connection testing, and IMAP edge cases (coverage 42%→98%)
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/4dd19cb3-dd43-4b00-be39-493fa3a35458
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 00:03:58 +00:00
Christian Krakau-Louis
0568caeb8f
Merge pull request #125 from christianlouis/copilot/fix-mail-account-processing-issues
...
Silence recurring log noise from aioimaplib and Gmail discovery client
2026-03-29 00:51:20 +01:00
copilot-swe-agent[bot]
dd9a80a8c5
Add domain-based logo fallback for mail accounts without provider_name
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/2a2d3ad8-ff03-4ff2-9dc0-0d1e58ac050d
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 23:42:28 +00:00
copilot-swe-agent[bot]
029c272a4e
Fix log noise: cache_discovery=False for Gmail API, suppress aioimaplib INFO logs
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/8855bf16-124d-4d85-b6bd-ab82e8361114
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 23:40:49 +00:00
copilot-swe-agent[bot]
0a0836e993
fix: convert jest.config.js to jest.config.mjs (ES module syntax)
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/6e25705d-50db-4b0c-969c-1be4cb3f1745
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 23:27:56 +00:00
copilot-swe-agent[bot]
0645bc0462
feat(ci): add Codecov integration with frontend Jest coverage and CODECOV_TOKEN
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/53f8deb9-5c3a-4940-a058-c8ee7e4104e0
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 23:14:15 +00:00
copilot-swe-agent[bot]
8152635238
fix(ci): replace safety scan with pip-audit to fix CI EOF error
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/986fc7f4-e884-4169-bd81-eca034e926e2
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 23:04:23 +00:00
copilot-swe-agent[bot]
da05016143
Fix IMAP emails appearing empty: accept bytearray from aioimaplib literals
...
aioimaplib stores RFC822 literal data as bytearray in response.lines,
not bytes. The extraction loop checked isinstance(line, bytes) which
returns False for bytearray, silently dropping every email body and
causing all IMAP emails (T-Online, GMX, etc.) to appear empty.
Fix: accept (bytes, bytearray) and convert to bytes() immediately so
the rest of the pipeline is unaffected. Two new regression tests mirror
the real aioimaplib behaviour by passing bytearray as the literal.
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/341f5c82-70f8-438d-91ca-8e906a06c400
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 22:08:04 +00:00
Christian Krakau-Louis
eae2f59c53
Merge branch 'main' into copilot/upgrade-fastapi-starlette
2026-03-28 22:07:04 +01:00
copilot-swe-agent[bot]
5bddbb42f5
security: upgrade fastapi to 0.135.2, fix safety scan command, add safety policy for ecdsa CVEs
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/902f3b74-792c-4afa-8aae-96611262ee5f
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 21:04:13 +00:00
copilot-swe-agent[bot]
062739a9a1
Fix IMAP UID SEARCH crash and RFC 3501 flag parentheses
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/a44d5455-25ea-49b9-8310-4efd6d467e84
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 21:00:44 +00:00
copilot-swe-agent[bot]
40c23c43fe
fix: CI pipeline Node.js 20 deprecation, Codecov input, img lint errors
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/6bbc5b0e-ece1-4bed-8bf7-20e1e7027948
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 20:39:15 +00:00
Christian Krakau-Louis
9073f43aed
Merge branch 'main' into copilot/debug-imap-errors-t-online
2026-03-28 21:21:54 +01:00
copilot-swe-agent[bot]
454452a0b6
fix: use UID-based IMAP commands and batch STORE operations to fix T-Online BYE errors
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/d01a05d3-31e1-4aca-b75d-c4e63b7e5af0
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 20:20:43 +00:00
Christian Krakau-Louis
96dda16a66
Merge branch 'main' into copilot/fix-status-tracking-issue
2026-03-28 21:19:31 +01:00
copilot-swe-agent[bot]
9eab576bf1
Fix timezone display: parse UTC timestamps correctly in logs pages
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/70a69601-e0b9-4a00-bcf4-0a85d2bdf6cb
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 20:12:13 +00:00
Christian Krakau-Louis
bf1b465971
Merge branch 'main' into copilot/update-dashboard-status-view
2026-03-28 21:08:53 +01:00
copilot-swe-agent[bot]
d92affabec
Fix worker status tracking: use fresh DB session for notifications, commit before notifying
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/70a69601-e0b9-4a00-bcf4-0a85d2bdf6cb
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 20:04:52 +00:00
copilot-swe-agent[bot]
f7caa05c8f
Fix provider logos, improve Fetch button UX on mail accounts page
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/058b6481-f8eb-43ed-8f5f-715c19c4a377
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 20:03:19 +00:00
copilot-swe-agent[bot]
6afd7c871e
feat(dashboard): replace per-run table with per-account Mailbox Status view
...
- Remove noisy "Recent Processing Runs" table from dashboard
- Add per-account AccountStatusRow showing: name, email, OK/Error/Pending
badge, relative last-check time, inline error message, lifetime counters
- Stats cards: "Emails Forwarded Today" → "Emails Processed" (all-time),
"Errors" → "Accounts with Errors" (turns gray when 0)
- Remove unused processingRunsApi import (saves one API call on page load)
- "View activity & history →" link to /logs for full drill-down
- Update CHANGELOG.md and docs/TODO.md
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/0d97741e-e999-49dd-a8f2-dceac2c1da1f
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 20:02:12 +00:00
copilot-swe-agent[bot]
0698eca628
fix: resolve 21 mypy type errors across backend modules
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/bc16203d-7907-4e3f-952f-18c760c85076
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 19:32:53 +00:00
Christian Krakau-Louis
15af7fde61
Merge pull request #108 from christianlouis/copilot/add-pull-now-option-mailbox
...
Add "Pull Now" button, provider logo banners, and Proton Mail support
2026-03-28 20:24:34 +01:00
copilot-swe-agent[bot]
aa2ea611b1
Logo banner layout rework, Proton Mail provider, ProviderWizard sizing improvements
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/8dc8f341-02b2-4449-8a88-a2124033c31a
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 19:18:17 +00:00
Christian Krakau-Louis
9638e031ea
Merge pull request #107 from christianlouis/copilot/check-mailbox-credentials
...
Fix: Test Connection always reports success regardless of auth result
2026-03-28 20:14:42 +01:00
copilot-swe-agent[bot]
fc7e09d4d6
Add Pull Now button and provider logos to accounts page
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/0201089a-598d-4ab0-a5a3-8d2ae1120c9e
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 19:02:52 +00:00
copilot-swe-agent[bot]
441e8b54e9
fix: test connection always showed success; add per-account test endpoint
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/6268035d-325f-422a-886f-8b2919127261
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 18:57:25 +00:00
copilot-swe-agent[bot]
dd4532f660
feat: mailbox-centric activity view, reduce log noise from empty polling cycles
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/1a78a249-127f-4a73-a454-3c6bafbf6e58
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 18:45:38 +00:00
copilot-swe-agent[bot]
d0719eff76
Fix Celery datetime timezone crash and per-account polling interval
...
- Wrap account.last_check_at with _as_utc() helper before datetime
subtraction to fix "can't subtract offset-naive and offset-aware
datetimes" crash that silently prevented all mail account processing
- Change beat schedule from every 5 min to every 1 min so accounts
configured with check_interval_minutes=1 are polled as expected
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/53169783-5139-43a1-bda8-709fadd0f774
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 17:59:22 +00:00
copilot-swe-agent[bot]
4844377342
Decouple Gmail permissions from Google Sign-In OAuth flow
...
The Google Sign-In flow now only requests basic profile scopes (openid,
email, profile) instead of also requesting Gmail API scopes. Users can
grant Gmail access separately via the "Connect Gmail" button in Settings.
- Remove GMAIL_SCOPES from GOOGLE_LOGIN_SCOPES in auth.py
- Remove Gmail credential auto-provisioning from google_oauth endpoint
- Simplify /auth/google/authorize-url (no offline access or forced consent)
- Clean up auth_service.py OAuth registration to only use login scopes
- Remove unused imports (GmailCredential, GmailService, encrypt_credential, etc.)
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/91d2db11-811f-46f5-ac89-29952ab358b5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-27 21:01:46 +00:00