copilot-swe-agent[bot]
2a005d9103
feat: add Send Test Email button for SMTP Fallback config
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/9485ffb9-ce3d-4c6b-9d2c-9144dd4287ff
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-05-03 20:58:32 +00:00
Christian Krakau-Louis
ed4c4f5a60
Merge branch 'main' into copilot/add-debug-logging-for-mail-fetching
2026-05-03 21:17:01 +02: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
copilot-swe-agent[bot]
e98c81cce4
Add exc_info=True to OAuth error logging and endpoint-level catch in google_oauth
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/8d0fb51a-ede5-4bb7-aad8-3d29a0d3d7d3
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-05-03 17:35:49 +00:00
copilot-swe-agent[bot]
075ba92f09
feat: add in-depth OAuth logging across auth_service, auth, providers, gmail_service
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/91c7dd2b-0d88-46a9-a711-3a4c69d99520
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-05-03 15:05:27 +00: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]
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]
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]
1bb3f71230
Add version/build-date status bar to dashboard footer
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/9efbf677-2d92-487b-abae-9adf0c728f88
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-28 11:09:38 +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
copilot-swe-agent[bot]
896329ccb7
Fix black lint, fix /processing-runs 404s, add semantic release and GitOps deploy
...
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/3fdf6219-3e1f-4867-b74d-efb6e4fe7e72
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 19:17:11 +00:00
Christian Krakau-Louis
b824095bf5
Merge branch 'main' into copilot/add-apprise-alerting-capabilities
2026-03-26 19:39:27 +01: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]
9314c38775
chore: address review follow-ups
...
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:24:00 +00: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]
fd45c838fc
feat: Add logging and reporting capabilities with GDPR compliance
...
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/d6e65ca9-f07f-43a2-bac2-09eb44588ded
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 18:12:22 +00:00
copilot-swe-agent[bot]
bbd2febfc1
Add Apprise alerting capabilities (backend)
...
- Add name + apprise_url columns to NotificationConfig model
- Add AdminNotificationConfig model for system-wide alert channels
- Create NotificationService with send_user_notification,
send_admin_notification, and test_notification helpers
- Replace stub notifications.py with full CRUD + /test endpoint
- Add admin notification config CRUD + /test to admin.py
- Update NotificationConfig schemas: name required, apprise_url
optional, config optional (default {})
- Add AdminNotificationConfig* schemas
- Integrate send_user_notification into process_mail_account task
for Gmail revocation, forwarding failures, and exceptions
- Update CHANGELOG.md
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 18:06:05 +00:00
copilot-swe-agent[bot]
ca87abce0a
feat: add Prometheus metrics and Grafana dashboard for system health monitoring
...
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/11ac4536-eaad-44fe-920c-e8306918f06f
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 16:31:23 +00:00
copilot-swe-agent[bot]
d4aa353383
B2C/B2B split: DEFAULT_USER_TIER, ALLOWED_DOMAINS, zero-price filter, InboxRescue branding & pricing page
...
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/98c1f90b-0287-4908-a0be-ad066c453cc5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 16:10:39 +00:00
copilot-swe-agent[bot]
7971d3f76a
Fix subscription limits; seed Free/Good/Better/Best default plans
...
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/98c1f90b-0287-4908-a0be-ad066c453cc5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 16:00:56 +00:00
copilot-swe-agent[bot]
979b7b6cec
Add admin interface, auto-promote admin email, fix sender name
...
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/98c1f90b-0287-4908-a0be-ad066c453cc5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-26 15:53:24 +00:00
Christian Krakau-Louis
c404afa539
Merge branch 'main' into copilot/fix-mailbox-parameter-editing
2026-03-26 11:47:37 +01:00
copilot-swe-agent[bot]
5c40415590
Add Gmail debug email functionality
...
- GmailService: add get_or_create_label() and inject_debug_email() methods
- providers.py: add POST /providers/gmail/debug-email endpoint
- api.ts: add GmailDebugEmailResponse interface and gmailApi.sendDebugEmail()
- settings/page.tsx: add Send Debug Email button with success/error feedback
- Update CHANGELOG.md and docs/TODO.md
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/c609ede7-b9d7-4ab1-acdb-8d29164066cc
2026-03-25 23:00:47 +00:00
copilot-swe-agent[bot]
20170f2f2d
Fix mailbox edit form: pre-populate fields, prevent credential overwrite, lock immutable settings
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/20fa7a89-23e5-462c-8b4d-9c6cdb4d0501
2026-03-25 23:00:00 +00:00
copilot-swe-agent[bot]
b46fabd8cd
feat: expand Gmail OAuth scopes, unify Google callback URL, store Gmail creds on login
...
- Add gmail.readonly to GMAIL_SCOPES (gmail_service) and GMAIL_API_SCOPES (providers)
so users().getProfile() no longer returns 403 insufficientPermissions
- Consolidate Gmail scope list: GMAIL_SCOPES in gmail_service.py is the single
source of truth; auth.py and providers.py now import and spread it
- Add include_granted_scopes=true to both Gmail and login authorize URLs so
scope additions take effect for previously-connected users
- Add state=gmail_connect to the Gmail authorize URL; the shared /auth/callback
page routes to gmailApi.saveCallback() when this state is present, otherwise
falls through to the normal login flow
- Google Sign-In authorize URL now requests all six scopes (openid, email,
profile + 3 Gmail scopes) with access_type=offline, prompt=consent, and
include_granted_scopes=true
- POST /auth/google now stores Gmail credentials automatically after sign-in
(non-fatal: login succeeds even if credential storage fails)
- Settings Connect Gmail button now uses /auth/callback instead of
/auth/gmail-callback - only ONE redirect URI needed in Google Cloud Console
- URL-encode scope parameter in both authorize URL builders
- Update auth_service._register_google scope to include all Gmail scopes
- Update CHANGELOG.md and docs/TODO.md
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/d6e2de8b-088d-46f3-8127-137245c3ecdd
2026-03-25 19:53:46 +00:00
copilot-swe-agent[bot]
caa8eecd0a
feat: Gmail OAuth flow, per-user SMTP, message dedup, account disable toggle
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/b77800ca-b452-4427-b0bf-63403e906916
2026-03-25 11:34:52 +00:00
copilot-swe-agent[bot]
a15216c630
feat: add account toggle, message dedup tracking, SMTP per-user and Gmail OAuth flow plan
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/b77800ca-b452-4427-b0bf-63403e906916
2026-03-25 11:20:22 +00:00
google-labs-jules[bot]
dd70a16443
⚡ Optimize provider preset lookup by ID
...
Replaced O(n) list iteration with O(1) dictionary lookup in the `get_provider_preset` endpoint.
A mapping (`PROVIDER_PRESETS_MAP`) is initialized at module load time to enable constant-time retrieval.
💡 **What:** Optimized retrieval of mail provider presets.
🎯 **Why:** To improve efficiency and scalability of the lookup process.
📊 **Measured Improvement:** Baseline (list lookup) took ~0.54s for 1M iterations, while optimized (dict lookup) took ~0.12s, resulting in a ~77% performance improvement for lookups.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-23 16:18:50 +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]
27c50e49cf
Fix all mypy and eslint errors, add copilot lint instructions
...
Backend (mypy - 56 errors fixed):
- database.py: Fix async generator return type to AsyncGenerator
- database_models.py: Add type annotations for SQLEnum columns
- middleware.py: Use explicit Optional for exempt_paths parameter
- mail_processor.py: Fix type narrowing in fetch_emails, add Dict type annotation for KNOWN_PROVIDERS
- users.py, auth.py, providers.py, tasks.py: Add type: ignore comments for SQLAlchemy Column assignment patterns
Frontend (eslint - 3 errors, 2 warnings fixed):
- login/page.tsx: Replace any with unknown + type narrowing, prefix unused vars with underscore
- register/page.tsx: Replace any with unknown + type narrowing
Add .github/copilot-instructions.md with lint-check requirements
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
Agent-Logs-Url: https://github.com/christianlouis/pop_puller_to_gmail/sessions/dac7ab78-fe27-4fe4-890f-32c6c1c6d881
2026-03-23 10:48:16 +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]
681e0582f6
Address code review: fix imports, salt hashing, conditional delivery message
...
- Move asyncio import to module level in gmail_service.py
- Move datetime import to module level in providers.py
- Use hashlib.sha256 for per-user salt generation (no truncation risk)
- Make delivery method message conditional in AddMailAccountModal
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:05:41 +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]
5be2794c95
Add FastAPI application, API endpoints, Celery workers, and Docker configuration
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-01 12:48:32 +00:00
copilot-swe-agent[bot]
130b53d37f
Add backend foundation: database models, security, and mail processing service
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-01 12:44:22 +00:00