copilot-swe-agent[bot]
5a753ef3cf
style: fix import ordering in main.py to satisfy isort
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/ebb5eb3f-a4d4-4834-a144-9bd81b6c7ada
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:40:06 +00:00
copilot-swe-agent[bot]
4b2b904421
fix: import all SQLAlchemy models in main.py to prevent mapper initialization error
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/de847912-dc10-4124-9de5-61d4ea53a53e
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:28:53 +00:00
semantic-release
6eeda1c5bd
chore(release): v1.4.0
2026-03-29 19:18:18 +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]
087c2b375b
fix: remove stray fragments and duplicate _sanitize_for_log definitions in dns_resolver.py
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/8ad92992-343e-4e81-a830-cd83efcb2437
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 19:06:36 +00:00
semantic-release
8480b18b95
chore(release): v1.3.1
2026-03-29 19:00:04 +00:00
Christian Krakau-Louis
a77a89f475
Potential fix for code scanning alert no. 120: Log Injection
...
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-29 21:00:04 +02:00
Christian Krakau-Louis
8d5b713bf1
Potential fix for code scanning alert no. 119: Log Injection
...
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-29 20:59:52 +02:00
Christian Krakau-Louis
23d5377a50
Potential fix for code scanning alert no. 118: Log Injection
...
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-29 20:59:39 +02:00
Christian Krakau-Louis
76e5e4d8f7
Merge pull request #64 from christianlouis/copilot/check-data-persistence
...
fix: ensure data persistence across container reinstallations
2026-03-29 20:59:12 +02:00
copilot-swe-agent[bot]
6294e4c935
Fix black formatting in report_store.py
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/f917b2ae-df6c-4852-b3e1-4c7ea8f68996
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 18:58:07 +00:00
copilot-swe-agent[bot]
a04006f75b
fix: address code review — narrow exception types, computed dkimLiveText getter
...
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:56:08 +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]
dd9aeb0aac
Fix domain detail page: quote domain_id in Alpine.js x-data attribute
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/e56426a2-da63-4f8a-95cc-e05972be9e51
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 18:44:33 +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]
d2a557354f
fix: correct TemplateResponse call in mail_sources_page to use new Starlette API
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/16838094-12d6-4279-9c94-58b7fb4ad3d7
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 18:26:49 +00:00
semantic-release
24d7a7fd19
chore(release): v1.3.0
2026-03-29 18:22:31 +00:00
Christian Krakau-Louis
a679459f5c
Merge pull request #57 from christianlouis/copilot/fix-not-found-error
...
Fix 404 on /domains/{domain_id} page route
2026-03-29 20:21:37 +02:00
Christian Krakau-Louis
a0cbdb7b43
Merge pull request #58 from christianlouis/copilot/fix-namespace-issue-in-dmarc-parser
...
Fix XML namespace handling in DMARCParser for web.de/gmx.net reports
2026-03-29 20:21:18 +02:00
copilot-swe-agent[bot]
a64ed4acb3
feat: multi-file drag-and-drop upload with auto sequential ingest
...
- Add `multiple` attribute to file input so users can select/drop
multiple DMARC report files at once
- Remove the manual "Upload Report" button; files start uploading
automatically as soon as they are dropped or selected
- Show a per-file queue with status icons: pending (clock), uploading
(spinner), success (checkmark), error (×) plus a result message
- Sequential upload via a while-loop that processes each pending entry
one at a time; newly-dropped files during an active upload are
picked up automatically on the next iteration
- "Clear all" button removes completed/failed files while keeping any
in-flight upload untouched; individual files can be removed too
- Summary alert after the full batch completes: all-success,
all-error, or mixed
- Use lastIndexOf for robust file-extension extraction
- Updated card description to reflect automatic multi-file upload
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/d6fb5b08-e55f-4f96-ac9b-3e4b69b3945c
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 18:06:49 +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]
17116d8603
Fix 404 on /domains/{domain_id} by adding plural route alias and updating template link
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/c498fef5-0a5e-4182-b765-fc3ec074b515
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 17:57:00 +00:00
semantic-release
0617cd6d2d
chore(release): v1.2.2
2026-03-29 17:53:04 +00:00
Christian Krakau-Louis
c631c5abbc
Merge pull request #56 from christianlouis/copilot/fix-clear-text-logging
...
fix: remove clear-text logging of API key
2026-03-29 19:52:11 +02:00
copilot-swe-agent[bot]
9bd64c0429
fix: remove clear-text logging of full API key
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/add3a51d-8235-4d29-8020-589bffa8ebb5
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 17:45:02 +00:00
semantic-release
4210450d2e
chore(release): v1.2.1
2026-03-29 17:44:47 +00:00
Christian Krakau-Louis
af8620fecc
Merge pull request #55 from christianlouis/copilot/fix-internal-server-error
...
Fix 500 on all page routes: update TemplateResponse calls to Starlette 1.0.0 API + black formatting
2026-03-29 19:43:55 +02:00
copilot-swe-agent[bot]
d91f424f3f
style: auto-format main.py with black to fix CI lint failure
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/c36f34ee-49c9-4875-9fb9-4bc70aeeb43f
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 17:32:46 +00:00
semantic-release
ae55ef46ea
chore(release): v1.2.0
2026-03-29 17:31:15 +00:00
Christian Krakau-Louis
a67900902b
Merge pull request #53 from christianlouis/copilot/refactor-imap-config-storage
...
Fix CodeQL security alerts and improve mail sources test coverage
2026-03-29 19:30:23 +02:00
copilot-swe-agent[bot]
2a2fc9bfd5
fix: update TemplateResponse calls to Starlette 1.0.0 API to fix 500 error
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/2ec7d964-c658-4489-9d06-9ea78596cddd
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 17:11:30 +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
semantic-release
4350bdcc16
chore(release): v1.1.0
2026-03-29 17:00:23 +00:00
copilot-swe-agent[bot]
42d93e7f84
feat: add /health and /healthz root-level endpoints for Kubernetes probes
...
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/74214dce-9171-424f-bafb-ee7032870801
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-29 16:52:55 +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]
6329d3aa35
Use timezone-aware UTC datetimes for timestamp conversions
...
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:45:26 +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
semantic-release
e09f39954f
chore(release): v1.0.4
2026-03-29 15:27:30 +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
semantic-release
e057a9c013
chore(release): v1.0.3
2026-03-29 13:01:35 +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
semantic-release
ea317bac32
chore(release): v1.0.2
2026-03-29 11:45:17 +00:00
Christian Krakau-Louis
e471404538
Merge pull request #27 from christianlouis/copilot/fix-script-location-error
...
fix: initialize Alembic migrations to resolve container startup failure
2026-03-29 13:44:27 +02:00