copilot-swe-agent[bot]
eeb3fa5c66
refactor: use __len__ for MailDebugRecorder, str() size estimate, clearer tests, fix unused import
...
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:59:41 +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]
db893d05e9
feat: add friendly error messages, MailDebugRecorder, clear-error endpoint, debug_logging column
...
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:43:06 +00:00
Christian Krakau-Louis
592495c1af
Merge pull request #171 from christianlouis/copilot/ensure-emails-are-retried
...
fix: retry failed email forwards; only mark/delete successfully forwarded messages
2026-04-07 13:09:32 +02:00
copilot-swe-agent[bot]
74ef362833
fix: remove duplicate MailProcessor import in test_mail_processor_imap.py
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/15ec037d-0e37-4adb-8249-149dd5375121
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-04-07 10:46: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
copilot-swe-agent[bot]
3dd71cd61d
fix: restore missing forward_email signature and reformat with black
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/3c4ae596-6052-4a61-9edd-b668a6cda32e
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-04-07 10:38:00 +00:00
copilot-swe-agent[bot]
ff7b50d944
fix: retry failed forwarded emails; only post-process successfully forwarded messages
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/e1fb16dc-0187-4ab9-901a-e0a76de64599
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-04-07 10:32:38 +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]
7afa33f375
style: reformat test_gdpr.py and test_gmail_labels.py to fix black CI check
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/63618a76-39b3-43af-b7a8-be2ae3d3ec8a
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-04-05 19:23:22 +00:00
copilot-swe-agent[bot]
149ff3d997
fix: address CodeQL URL substring sanitization false positives in tests
...
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:12:32 +00: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]
c3ee2fc821
test: expand gmail_service.py unit test coverage (10 new tests)
...
Add tests for uncovered branches:
- inject_email HttpError handling
- get_or_create_label: existing label, create new, HttpError, generic error
- inject_debug_email full flow + dedup of test label
- get_refreshed_token: token changed vs unchanged
- service property lazy initialization via build()
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 01:01:33 +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
copilot-swe-agent[bot]
e52f00bc16
Move model imports to module level per code review feedback
...
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:06:19 +00: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]
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
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
copilot-swe-agent[bot]
0720901265
fix: drop empty emails, clear stale errors on success, harden IMAP extraction
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/d50e7f06-4c6f-4caa-b5dd-329068e8096c
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 21:42:19 +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]
3c8bb4bfb6
style: apply black formatting to test_mail_processor_imap.py
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/2f63c66a-f2dd-41f4-aba4-b89b66f9e11b
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 20:28:33 +00: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
64b8e788ce
Merge pull request #90 from christianlouis/copilot/add-google-import-labels
...
Add configurable Gmail import labels with opinionated defaults
2026-03-26 19:36:57 +01:00
copilot-swe-agent[bot]
5711a56569
feat: add configurable gmail import labels
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/4d504045-2740-4bab-b51e-960fe4dafe4b
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 18:20:09 +00:00
copilot-swe-agent[bot]
92d67369e9
feat: rename project to InboxConverge with configurable contact details
...
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/82f2f361-3513-44e6-991b-db1a19902772
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 18:06:46 +00:00
copilot-swe-agent[bot]
744618fefe
Fix test_app_title to match renamed app InboxRescue
...
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/1411bfd7-f8c6-4e93-8182-a6885ef511d8
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 16:16:28 +00:00
copilot-swe-agent[bot]
702650376e
Add database-backed configuration (AppSetting model, ConfigService, settings API)
...
- Add AppSetting model for key-value settings storage in PostgreSQL
- Create ConfigService with DB-first, env-var-fallback resolution
- Add admin-only /api/v1/settings CRUD endpoints
- Update tasks.py to use ConfigService for SMTP config
- Seed default settings on application startup
- Add 24 unit tests for ConfigService (all passing)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/ce88d4a8-d8c2-49b3-95a1-30592105a769
2026-03-23 13:35:52 +00:00
copilot-swe-agent[bot]
f439f887d0
fix: address multiple code quality improvements across backend and frontend
...
Backend fixes:
- Fix JWT sub claim: encode as str(user.id), decode with int() cast (python-jose requirement)
- Replace all deprecated datetime.utcnow() with datetime.now(timezone.utc)
- Replace deprecated FastAPI @app.on_event() with modern lifespan context manager
- Replace deprecated Pydantic class Config with model_config = ConfigDict(...)
- Replace deprecated Pydantic .dict() with .model_dump()
- Fix overly broad except (GmailInjectionError, Exception) → except Exception
- Remove unused GmailInjectionError import
- Fix TokenPayload schema sub field type from int to str
Frontend:
- Create frontend/src/lib/api.ts — API client module with auth, user, mail accounts, processing runs APIs
- Add !frontend/src/lib/ to .gitignore negation
Tests:
- Add 3 new JWT tests (sub string encoding, access token type, refresh token type)
- Update test_token_payload_schema for string sub claim
- All 128 tests pass
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/e0b13eb0-8de7-4f02-81e4-e202cbba4608
2026-03-23 13:09:23 +00:00
copilot-swe-agent[bot]
d66af4d8ef
feat: Milestone 1 Security & Infrastructure improvements
...
- Add Dependabot configuration for pip, npm, GitHub Actions, Docker
- Update copilot instructions to require TODO.md and CHANGELOG.md updates
- Add unit tests for middleware, security, app factory, and schemas (125 total tests, 57% coverage)
- Update TODO.md with current progress
- Update CHANGELOG.md with all changes
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/2f15a52f-6812-4586-9d5c-a144226c842b
2026-03-23 11:23:37 +00:00
copilot-swe-agent[bot]
a918421945
Fix all 33 ruff linting errors causing CI failures
...
- Remove unused imports (F401) across 17 files
- Fix f-strings without placeholders (F541) in 3 files
- Add noqa: E712 to SQLAlchemy == True comparisons (valid ORM pattern)
- Preserve alembic side-effect import with noqa: F401
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/99c3a25f-3479-473d-ac95-9faaa0ddd55b
2026-03-23 10:38:39 +00:00
copilot-swe-agent[bot]
bcbef88803
Fix CI failures: add backend/conftest.py for module resolution and run black formatting
...
- Add backend/conftest.py that inserts the backend directory into sys.path,
fixing ModuleNotFoundError when pytest runs from the backend/ directory
(as CI does with `cd backend && pytest tests/`)
- Run black formatter on all 28 backend files that needed reformatting
- All 53 tests pass with both `pytest tests/` and `python -m pytest tests/`
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/beb47db2-da25-416a-8fb0-c1452a3b22a7
2026-03-23 10:24:28 +00:00
copilot-swe-agent[bot]
b05d489563
Fix pre-existing bugs: PBKDF2 import, test function names, salt truncation
...
- Fix cryptography import: PBKDF2 -> PBKDF2HMAC
- Fix test_security.py: use CredentialEncryption class instead of non-existent functions
- Fix salt generation to include user_id in differentiation
- Remove unavailable poplib3 dependency
- All 53 tests pass
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/de3ef930-a980-4958-8a9d-a2c802918e81
2026-03-22 19:03:22 +00:00
copilot-swe-agent[bot]
40150da3a9
Add Gmail API injection, provider presets, delivery method, and frontend wizard
...
- Add gmail_service.py with Gmail API users.messages.insert() for direct email injection
- Add DeliveryMethod enum and GmailCredential model to database models
- Add delivery_method field to MailAccount schema and model
- Create providers.py endpoint with 12 provider presets (Gmail, GMX, WEB.DE, Outlook, Yahoo, AOL, T-Online, 1&1/IONOS, Freenet, Posteo, mail.de, iCloud)
- Expand MailServerAutoDetect with 30+ domain mappings
- Update Celery tasks to prefer Gmail API injection, with SMTP fallback
- Add ProviderWizard.tsx frontend component for quick provider setup
- Update AddMailAccountModal.tsx with wizard integration
- Add Google API Python client libraries to requirements.txt
- Add Gmail API config settings
- Add unit tests for Gmail service and provider presets
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/de3ef930-a980-4958-8a9d-a2c802918e81
2026-03-22 19:00:30 +00:00
copilot-swe-agent[bot]
da4d501acb
fix: Address code review feedback - datetime, event_loop, and readability
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-06 22:05:09 +00:00
copilot-swe-agent[bot]
e64f0f2705
feat: Add security hardening, agentic coding infrastructure, and test framework
...
- Add SECRET_KEY and ENCRYPTION_KEY validation on startup
- Implement security headers middleware (X-Frame-Options, CSP, HSTS)
- Add CSRF protection middleware
- Create comprehensive GitHub issue templates and PR template
- Add Makefile with common development tasks
- Configure pre-commit hooks (black, ruff, mypy, bandit, detect-secrets)
- Create docs/CODING_PATTERNS.md with best practices
- Create docs/ERRORS.md documenting all error codes
- Add Architecture Decision Records (ADR) for Celery and Fernet encryption
- Create CHANGELOG.md for version tracking
- Set up pytest test infrastructure with fixtures and factories
- Add sample unit tests for security and config validation
- Create CI/CD workflows (test, lint, security)
- Add comprehensive TODO.md with milestones and progress tracking
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-06 22:01:11 +00:00