Christian Krakau-Louis
8665e39ff4
Merge pull request #70 from christianlouis/copilot/fix-internal-server-error
...
Fix 500 on GET /api/v1/domains/{domain}/sources: wrong record keys in ReportStore
2026-03-30 00:26:51 +02:00
Christian Krakau-Louis
506346537c
Merge pull request #67 from christianlouis/copilot/add-gmail-api-mail-source
...
feat: add Gmail API & main.py helper tests; fix flake8 lint errors
2026-03-30 00:26:28 +02:00
copilot-swe-agent[bot]
cd1f82aa79
Fix 500 error in GET /domains/{domain}/sources: use spf_result/dkim_result not spf/dkim
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/59552cb2-df2b-43dd-a22c-bd699a458afb
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 22:17:05 +00:00
copilot-swe-agent[bot]
70c6a70af3
fix: remove unused DMARC_GMAIL_QUERY import and fix trailing blank line/unused variable in test_gmail_client.py
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/21ea643d-3111-45d7-b66b-d90967ced313
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 22:14:01 +00:00
copilot-swe-agent[bot]
69c3bac480
feat: add GmailClient unit tests and main.py helper tests to meet coverage target
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/77ac3e98-81fa-45fa-9cc2-481896ffb48e
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 22:08:38 +00:00
copilot-swe-agent[bot]
2d364509bd
fix: resolve remaining CodeQL alerts and raise mail_sources coverage to 100%
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/adfb364c-2feb-44fa-b9dd-73b9bdb7fa8f
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 21:39:00 +00:00
copilot-swe-agent[bot]
dbbf539182
fix: resolve CodeQL security alerts – log injection, info exposure, incomplete URL checks
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/093a5de2-644b-434d-8ce8-529710ecb40b
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 21:14:02 +00:00
copilot-swe-agent[bot]
204131ee2a
Add tests for domain reports and sources endpoints (fix Codecov patch coverage)
...
- test_get_domain_reports_returns_200: basic 200 success path
- test_get_domain_reports_policy_dict_extracted: policy{"p":...} → "reject"
- test_get_domain_reports_policy_string_preserved: string policy unchanged
- test_get_domain_reports_timestamps_are_integers: begin/end_timestamp used
- test_get_domain_reports_unknown_domain_returns_404: 404 guard
- test_get_domain_sources_returns_200: sources returned correctly
- test_get_domain_sources_days_param_accepted: 'days' kwarg no TypeError
- test_get_domain_sources_unknown_domain_returns_404: 404 guard
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/a6f52c82-f239-4910-ac08-50702c154f93
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 21:10:06 +00:00
copilot-swe-agent[bot]
0c05ded74f
fix: resolve flake8 C901/F401 errors in main.py, gmail_client.py, test_mail_sources.py
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/38868887-87b6-4032-8713-e90e56ae3318
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:50:50 +00:00
copilot-swe-agent[bot]
25b3567414
feat: implement Gmail API mail source with OAuth2, ingestion tracking, and UI
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/0c63851e-a69a-4a76-8dd8-25618e825b8c
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:34:03 +00:00
Christian Krakau-Louis
298ca938ec
Merge pull request #62 from christianlouis/copilot/check-dns-data-in-dashboard
...
fix: repair corrupted dns_resolver.py to pass black --check (py310 target)
2026-03-29 21:17:25 +02:00
Christian Krakau-Louis
0bdd789944
Merge pull request #61 from christianlouis/copilot/debug-mail-sources-500-error
...
fix: GET /mail-sources 500 — unhashable type: 'dict' in Jinja2 template cache
2026-03-29 21:16:47 +02:00
Christian Krakau-Louis
af457e4e48
Merge pull request #60 from christianlouis/copilot/handle-report-management
...
Fix Black formatting in report_store.py
2026-03-29 21:09:09 +02:00
copilot-swe-agent[bot]
2247115a7e
test: add coverage for mail_sources_page TemplateResponse fix
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/bf182279-fe6a-4efc-87a5-5eaefabd2e3a
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:07:57 +00:00
copilot-swe-agent[bot]
0d1a4fdac3
feat: real DNS lookups, manual DKIM selectors, Cloudflare-ready DNS provider architecture
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/19d17518-732d-4644-889b-cc63256e19b1
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 18:53:35 +00:00
copilot-swe-agent[bot]
423c596c28
fix: ensure data persistence across reinstallations
...
- Add entrypoint.sh: creates /app/data, stamps legacy DBs, runs alembic upgrade head
- Update Dockerfile to use new entrypoint and pre-create /app/data
- Change default DATABASE_URL to sqlite:///./data/dmarq.db
- Add _ensure_sqlite_dir() to database.py for automatic directory creation
- Update docker-compose.yml with app_data named volume for /app/data
- Add 6 tests for _ensure_sqlite_dir and updated default URL
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/2bac317b-97a2-450b-84f1-3e316f7ef54c
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 18:53:00 +00:00
copilot-swe-agent[bot]
53d543f49c
Add report deduplication and single-report deletion
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/37d68c2c-7cc8-45e4-bac3-e2e6f1611c6a
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 18:28:52 +00:00
copilot-swe-agent[bot]
0844981bc0
fix: handle XML namespaces in DMARCParser for web.de/gmx.net compatibility
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/56611674-6132-435f-ab36-728464bb9157
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 17:59:13 +00:00
copilot-swe-agent[bot]
84117abd13
fix: resolve CodeQL alerts, improve test coverage, fix StaticPool for HTTP tests
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/07b58025-2aeb-4e81-a168-7a6fccdc3569
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 17:08:39 +00:00
copilot-swe-agent[bot]
883d54a428
fix: address code review - Alpine.js $set, SQLAlchemy bool filter style
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/f141cd3b-8d0a-4c7e-b479-ee973c209c11
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 16:20:11 +00:00
copilot-swe-agent[bot]
6d9392e5e7
feat: refactor IMAP config to DB, add multi-account mail sources admin UI
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/f141cd3b-8d0a-4c7e-b479-ee973c209c11
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 16:18:15 +00:00
copilot-swe-agent[bot]
70dc77011a
Fix ModuleNotFoundError for asyncpg by normalizing async DB URLs to psycopg2
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/d1890838-1770-4d5f-886f-f210df761fae
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 16:03:18 +00:00
copilot-swe-agent[bot]
e51fbe755e
Replace mock dashboard data with real database queries and report-derived timelines
...
- Replace mock statistics in stats_summarizer.py with real SQLAlchemy queries
against DMARCReport, ReportRecord, and Domain models
- Replace random compliance timeline in domains.py with real data from ReportStore
- Remove unused `import random` from domains.py
- Add comprehensive tests for StatsSummarizer (global/domain/caching)
- Add tests for compliance timeline (deterministic, multi-report aggregation)
- Mark Dashboard Visualizations as complete in TODO.md
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/ea784ce3-2c1c-45f8-ad6d-46e92cf15ed7
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 15:43:33 +00:00
copilot-swe-agent[bot]
8e6ab244ad
fix: remove unused pytest import from test_config.py
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/63e79da9-2002-429a-b696-7147dc579668
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 15:15:46 +00:00
copilot-swe-agent[bot]
de4d1b2b34
style: apply black formatting to test_config.py
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/a0201223-b428-496d-90c7-cd268fee7774
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 13:52:28 +00:00
copilot-swe-agent[bot]
9f99b6c6d7
fix: handle empty BACKEND_CORS_ORIGINS env var to prevent JSONDecodeError
...
In pydantic_settings v2, List[str] fields are JSON-parsed by the env
source before pydantic validators run. When BACKEND_CORS_ORIGINS=""
(empty string) in Kubernetes, json.loads("") raised JSONDecodeError,
crashing alembic migrations.
Fixes:
- Add env_ignore_empty=True to class Config so pydantic_settings skips
empty-string env vars and falls back to the field default
- Update assemble_cors_origins validator to explicitly handle empty and
whitespace-only strings (returns []), JSON array strings (parsed via
json.loads), and filters empty tokens from comma-separated values
- Add backend/app/tests/test_config.py covering all CORS origins
parsing scenarios including the empty-string regression case
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/53bb1064-2a32-4691-8397-9d4663bc18a8
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 12:08:59 +00:00
copilot-swe-agent[bot]
01d0331136
Resolve linter contradictions: consolidate config, fix isort first-party, pylint 10/10
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/1e4a1f06-55b9-4040-853e-6aaf9ee574c8
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 11:31:15 +00:00
copilot-swe-agent[bot]
50aa5bd5da
Fix pylint warnings: logging, globals, exceptions, imports, duplicates
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/576427d4-4f6a-46d2-b75f-6862ecbcf526
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 11:21:35 +00:00
copilot-swe-agent[bot]
7752479444
plan: add flake8 complexity + unused global fixes to checklist
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/e58d59de-a79d-48e1-a4fc-ffb61b868593
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 10:54:05 +00:00
copilot-swe-agent[bot]
86e7598f03
Address code review: fix E501 consistency in AGENTS.md, fix exception handling in test_security.py
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/9d256101-34b6-4861-a8cf-7f86f32b54d5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 10:24:47 +00:00
copilot-swe-agent[bot]
bab702a010
Add Docker build & GHCR publish stage, fix CI workflows, update AGENTS.md and testing docs
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/9d256101-34b6-4861-a8cf-7f86f32b54d5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 10:23:49 +00:00
copilot-swe-agent[bot]
5fa315c8e3
Redesign test framework: fix conftest, rewrite all tests, fix model index conflicts, fix black formatting
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/9d256101-34b6-4861-a8cf-7f86f32b54d5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 10:19:43 +00:00
google-labs-jules[bot]
1831c1a079
🔒 security: move IMAP credentials to request body and fix CI/pylint issues
...
- Moved IMAP credentials from query parameters to the request body for the test-connection endpoint.
- Created missing `__init__.py` files across `backend/app/` to fix CI `ModuleNotFoundError`.
- Reformatted `setup.py` and `user.py` using `black` to pass lint checks.
- Addressed Pylint warnings in `imap.py` (unused arguments, lazy logging, exception chaining).
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-23 18:57:40 +00:00
copilot-swe-agent[bot]
6ae017b142
Fix code formatting and linting issues
...
- Auto-format all Python files with black and isort
- Remove unused imports with autoflake
- Fix flake8 issues (missing newlines, blank lines, etc.)
- Fix nonlocal/global scope issues in main.py
- Fix security.py import order (E402)
- Remove f-string without placeholders
- Add nosec comment for intentional exception handling
- Fix test imports to match refactored DMARCParser API
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-09 12:08:51 +00:00
copilot-swe-agent[bot]
494ef135d5
Final code review fixes: move import, remove empty tests, add production warning
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-09 11:53:43 +00:00
copilot-swe-agent[bot]
8550799bf8
Address code review feedback: improve XSS prevention, structured errors, API key logging, CSP warnings
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-09 11:51:58 +00:00
copilot-swe-agent[bot]
2e22941927
Update SECURITY.md with completed remediation status and fix bandit warning
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-09 11:48:19 +00:00
copilot-swe-agent[bot]
d38934625d
Add comprehensive security tests for authentication, validation, and file upload
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-02-09 11:46:32 +00:00
Christian Krakau-Louis
f910cb0ba4
Add initial MVP documentation for DMARQ platform, detailing backend architecture, frontend implementation, and deployment structure
2025-04-17 15:20:42 +02:00