From 630be30a82387df8b72fd137730d23d9f07d085d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 29 Mar 2026 10:29:29 +0000 Subject: [PATCH] Add semantic release with automatic versioning, CHANGELOG, and VERSION file Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/00a0c62f-f046-4f73-9c6a-79073906264c Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- .github/workflows/release.yml | 35 ++++++ README.md | 17 ++- VERSION | 1 + backend/app/__init__.py | 3 + docs/changelog.md | 80 +++++++------ docs/development/generated_issues/README.md | 4 +- .../generated_issues/issues_preview.md | 108 +++++++++--------- mkdocs.yml | 2 + pyproject.toml | 22 ++++ scripts/generate_issues.py | 12 +- scripts/sync_version.py | 16 +++ 11 files changed, 192 insertions(+), 108 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 VERSION create mode 100644 scripts/sync_version.py diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1c34dce --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,35 @@ +name: Release + +on: + push: + branches: + - main + +jobs: + release: + name: Semantic Release + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Semantic Release + uses: python-semantic-release/python-semantic-release@v10 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + changelog: true + commit: true + tag: true + push: true + vcs_release: true diff --git a/README.md b/README.md index 4b9bd44..95a68e4 100644 --- a/README.md +++ b/README.md @@ -111,10 +111,13 @@ Then visit [http://localhost:8080](http://localhost:8080) ## ๐Ÿงช Development Roadmap - โœ… **Milestone 1**: Basic DMARC Monitoring (up to 5 domains) -- ๐Ÿ”„ **Milestone 2**: Enhanced Visualization & Analysis -- ๐Ÿ”œ **Milestone 3**: Database Persistence & User Management -- ๐Ÿ”œ **Milestone 4**: Email Integration & Automated Processing -- ๐Ÿ”œ **Milestone 5**: DNS Health & Configuration Suggestions +- โœ… **Milestone 2**: IMAP Integration +- โœ… **Milestone 3**: Database Persistence +- ๐Ÿ”œ **Milestone 4**: Enhanced Dashboard & Visualization +- ๐Ÿ”œ **Milestone 5**: User Authentication & Multi-User Support + +See the full [Roadmap](docs/development/roadmap.md) and [TODO](TODO.md) for details +on what is planned vs. what is currently implemented. --- @@ -126,7 +129,11 @@ MIT License โ€” you are free to use, modify, and host DMARQ for any purpose. ## ๐Ÿค Contributing -Pull requests are welcome! Please open an issue to discuss major features or design ideas before submitting code. Full contributing guide coming soon. +Pull requests are welcome! Please open an issue to discuss major features or design ideas before submitting code. See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide. + +This project uses [Conventional Commits](https://www.conventionalcommits.org/) and +[python-semantic-release](https://python-semantic-release.readthedocs.io/) for +automated versioning and changelog generation. --- diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..0d91a54 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.3.0 diff --git a/backend/app/__init__.py b/backend/app/__init__.py index e69de29..ca9bd10 100644 --- a/backend/app/__init__.py +++ b/backend/app/__init__.py @@ -0,0 +1,3 @@ +"""DMARQ - DMARC monitoring and analysis platform.""" + +__version__ = "0.3.0" diff --git a/docs/changelog.md b/docs/changelog.md index 75b55ff..a76d7e2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -5,47 +5,45 @@ All notable changes to DMARQ will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.0.0] - 2025-04-15 +This changelog is automatically maintained by +[python-semantic-release](https://python-semantic-release.readthedocs.io/). +See the root [CHANGELOG.md](https://github.com/christianlouis/dmarq/blob/main/CHANGELOG.md) +for the canonical version. + +## [0.3.0] - 2026-02-09 + +### Added +- Database persistence with SQLAlchemy ORM (SQLite and PostgreSQL support) +- Database migrations with Alembic +- Persistent storage replacing in-memory data store + +### Security +- Fixed missing authentication on admin endpoints (CRITICAL) +- Replaced default SECRET_KEY with secure auto-generation (CRITICAL) +- Replaced ElementTree with defusedxml to prevent XXE attacks (HIGH) +- Fixed IMAP credentials exposure in URL query parameters (HIGH) +- Added multi-layer file upload validation (HIGH) +- Added security headers middleware (CSP, X-Frame-Options, HSTS, etc.) (MEDIUM) +- Restricted CORS configuration (MEDIUM) +- Sanitized error responses to prevent information disclosure (MEDIUM) +- Added comprehensive security test suite + +## [0.2.0] - 2026-01-15 + +### Added +- IMAP integration for automatic DMARC report fetching +- Background task scheduler for periodic mailbox polling +- IMAP configuration UI with connection testing +- Manual sync trigger and status indicators + +## [0.1.0] - 2025-12-01 ### Added - Initial release of DMARQ -- Domain management with basic health checks -- DMARC report processing (aggregate and forensic) -- Dashboard with compliance rate visualization -- IMAP integration for automatic report collection -- User authentication and management -- SQLite and PostgreSQL database support -- Docker deployment option -- Basic alert system for compliance issues -- API for third-party integration -- Documentation site - -### Security -- Secure password storage with bcrypt -- JWT-based authentication for API -- Rate limiting for API endpoints -- Input validation for all user inputs - -## [0.9.0] - 2025-03-01 - -### Added -- Beta release for early testing -- All core functionality implemented -- Limited to SQLite database only - -### Fixed -- Multiple parser bugs for different report formats -- UI responsiveness issues on mobile devices - -## [0.8.0] - 2025-02-15 - -### Added -- Alpha release for internal testing -- Basic DMARC report parsing -- Simple domain management -- Initial dashboard design - -### Known Issues -- Limited support for forensic reports -- Missing authentication features -- No alerting capabilities \ No newline at end of file +- DMARC XML report parsing (supports XML, ZIP, and GZIP formats) +- In-memory storage of report data for up to 5 domains +- Simple dashboard UI showing DMARC compliance statistics +- Report upload via web interface +- Domain overview with compliance rates and email statistics +- Docker Compose deployment support +- FastAPI backend with Jinja2 templates and Tailwind CSS \ No newline at end of file diff --git a/docs/development/generated_issues/README.md b/docs/development/generated_issues/README.md index 536fdfb..fce7b5b 100644 --- a/docs/development/generated_issues/README.md +++ b/docs/development/generated_issues/README.md @@ -188,8 +188,8 @@ jq '.[] | select(.labels[] | contains("priority: high"))' issues.json ## ๐Ÿ“ž Support -- **Source**: Generated from [ROADMAP.md](../ROADMAP.md) -- **Script**: [scripts/generate_issues.py](../scripts/generate_issues.py) +- **Source**: Generated from [roadmap.md](../roadmap.md) +- **Script**: [scripts/generate_issues.py](../../../scripts/generate_issues.py) - **Questions**: Open an issue in the DMARQ repository ## ๐Ÿ”’ Important Notes diff --git a/docs/development/generated_issues/issues_preview.md b/docs/development/generated_issues/issues_preview.md index 5d9b04b..3e21b8d 100644 --- a/docs/development/generated_issues/issues_preview.md +++ b/docs/development/generated_issues/issues_preview.md @@ -29,7 +29,7 @@ Ongoing code quality tasks to maintain and improve DMARQ. ### Related Documentation -- [Continuous Improvements](../ROADMAP.md#continuous-improvements-ongoing) +- [Continuous Improvements](../roadmap.md#continuous-improvements-ongoing) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -56,7 +56,7 @@ Ongoing security tasks to maintain and improve DMARQ. ### Related Documentation -- [Continuous Improvements](../ROADMAP.md#continuous-improvements-ongoing) +- [Continuous Improvements](../roadmap.md#continuous-improvements-ongoing) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -83,7 +83,7 @@ Ongoing documentation tasks to maintain and improve DMARQ. ### Related Documentation -- [Continuous Improvements](../ROADMAP.md#continuous-improvements-ongoing) +- [Continuous Improvements](../roadmap.md#continuous-improvements-ongoing) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -110,7 +110,7 @@ Ongoing community tasks to maintain and improve DMARQ. ### Related Documentation -- [Continuous Improvements](../ROADMAP.md#continuous-improvements-ongoing) +- [Continuous Improvements](../roadmap.md#continuous-improvements-ongoing) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -138,7 +138,7 @@ Historical trend analysis ### Related Documentation -- [Milestone 10](../ROADMAP.md#milestone-10-advanced-analytics--reporting) +- [Milestone 10](../roadmap.md#milestone-10-advanced-analytics--reporting) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -162,7 +162,7 @@ Comparative reporting ### Related Documentation -- [Milestone 10](../ROADMAP.md#milestone-10-advanced-analytics--reporting) +- [Milestone 10](../roadmap.md#milestone-10-advanced-analytics--reporting) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -186,7 +186,7 @@ Export capabilities (PDF, CSV) ### Related Documentation -- [Milestone 10](../ROADMAP.md#milestone-10-advanced-analytics--reporting) +- [Milestone 10](../roadmap.md#milestone-10-advanced-analytics--reporting) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -210,7 +210,7 @@ Scheduled reports ### Related Documentation -- [Milestone 10](../ROADMAP.md#milestone-10-advanced-analytics--reporting) +- [Milestone 10](../roadmap.md#milestone-10-advanced-analytics--reporting) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -234,7 +234,7 @@ Custom dashboards ### Related Documentation -- [Milestone 10](../ROADMAP.md#milestone-10-advanced-analytics--reporting) +- [Milestone 10](../roadmap.md#milestone-10-advanced-analytics--reporting) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -262,7 +262,7 @@ Multi-tenant architecture ### Related Documentation -- [Milestone 11](../ROADMAP.md#milestone-11-enterprise-features) +- [Milestone 11](../roadmap.md#milestone-11-enterprise-features) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -286,7 +286,7 @@ API rate limiting ### Related Documentation -- [Milestone 11](../ROADMAP.md#milestone-11-enterprise-features) +- [Milestone 11](../roadmap.md#milestone-11-enterprise-features) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -310,7 +310,7 @@ Advanced RBAC ### Related Documentation -- [Milestone 11](../ROADMAP.md#milestone-11-enterprise-features) +- [Milestone 11](../roadmap.md#milestone-11-enterprise-features) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -334,7 +334,7 @@ SSO integration (SAML, OAuth) ### Related Documentation -- [Milestone 11](../ROADMAP.md#milestone-11-enterprise-features) +- [Milestone 11](../roadmap.md#milestone-11-enterprise-features) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -358,7 +358,7 @@ Compliance reporting (SOC 2, GDPR) ### Related Documentation -- [Milestone 11](../ROADMAP.md#milestone-11-enterprise-features) +- [Milestone 11](../roadmap.md#milestone-11-enterprise-features) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -382,7 +382,7 @@ High availability setup ### Related Documentation -- [Milestone 11](../ROADMAP.md#milestone-11-enterprise-features) +- [Milestone 11](../roadmap.md#milestone-11-enterprise-features) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -406,7 +406,7 @@ Backup and disaster recovery ### Related Documentation -- [Milestone 11](../ROADMAP.md#milestone-11-enterprise-features) +- [Milestone 11](../roadmap.md#milestone-11-enterprise-features) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -434,7 +434,7 @@ Historical trend charts (Chart.js integration) ### Related Documentation -- [Milestone 4](../ROADMAP.md#milestone-4-enhanced-dashboard--visualization) +- [Milestone 4](../roadmap.md#milestone-4-enhanced-dashboard--visualization) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -458,7 +458,7 @@ Compliance rate visualizations ### Related Documentation -- [Milestone 4](../ROADMAP.md#milestone-4-enhanced-dashboard--visualization) +- [Milestone 4](../roadmap.md#milestone-4-enhanced-dashboard--visualization) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -482,7 +482,7 @@ Volume and sender analytics ### Related Documentation -- [Milestone 4](../ROADMAP.md#milestone-4-enhanced-dashboard--visualization) +- [Milestone 4](../roadmap.md#milestone-4-enhanced-dashboard--visualization) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -506,7 +506,7 @@ Time-series data displays ### Related Documentation -- [Milestone 4](../ROADMAP.md#milestone-4-enhanced-dashboard--visualization) +- [Milestone 4](../roadmap.md#milestone-4-enhanced-dashboard--visualization) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -530,7 +530,7 @@ Domain comparison views ### Related Documentation -- [Milestone 4](../ROADMAP.md#milestone-4-enhanced-dashboard--visualization) +- [Milestone 4](../roadmap.md#milestone-4-enhanced-dashboard--visualization) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -558,7 +558,7 @@ FastAPI Users integration ### Related Documentation -- [Milestone 5](../ROADMAP.md#milestone-5-user-authentication--multi-user-support) +- [Milestone 5](../roadmap.md#milestone-5-user-authentication--multi-user-support) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -582,7 +582,7 @@ User registration and management ### Related Documentation -- [Milestone 5](../ROADMAP.md#milestone-5-user-authentication--multi-user-support) +- [Milestone 5](../roadmap.md#milestone-5-user-authentication--multi-user-support) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -606,7 +606,7 @@ JWT-based authentication ### Related Documentation -- [Milestone 5](../ROADMAP.md#milestone-5-user-authentication--multi-user-support) +- [Milestone 5](../roadmap.md#milestone-5-user-authentication--multi-user-support) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -630,7 +630,7 @@ Role-based access control (RBAC) ### Related Documentation -- [Milestone 5](../ROADMAP.md#milestone-5-user-authentication--multi-user-support) +- [Milestone 5](../roadmap.md#milestone-5-user-authentication--multi-user-support) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -654,7 +654,7 @@ Password reset functionality ### Related Documentation -- [Milestone 5](../ROADMAP.md#milestone-5-user-authentication--multi-user-support) +- [Milestone 5](../roadmap.md#milestone-5-user-authentication--multi-user-support) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -678,7 +678,7 @@ Email verification (optional) ### Related Documentation -- [Milestone 5](../ROADMAP.md#milestone-5-user-authentication--multi-user-support) +- [Milestone 5](../roadmap.md#milestone-5-user-authentication--multi-user-support) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -706,7 +706,7 @@ Apprise integration ### Related Documentation -- [Milestone 6](../ROADMAP.md#milestone-6-alerting--notifications) +- [Milestone 6](../roadmap.md#milestone-6-alerting--notifications) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -730,7 +730,7 @@ Customizable alert rules ### Related Documentation -- [Milestone 6](../ROADMAP.md#milestone-6-alerting--notifications) +- [Milestone 6](../roadmap.md#milestone-6-alerting--notifications) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -754,7 +754,7 @@ Multi-channel notifications (Email, Slack, etc.) ### Related Documentation -- [Milestone 6](../ROADMAP.md#milestone-6-alerting--notifications) +- [Milestone 6](../roadmap.md#milestone-6-alerting--notifications) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -778,7 +778,7 @@ Alert history and management ### Related Documentation -- [Milestone 6](../ROADMAP.md#milestone-6-alerting--notifications) +- [Milestone 6](../roadmap.md#milestone-6-alerting--notifications) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -802,7 +802,7 @@ Notification preferences per user ### Related Documentation -- [Milestone 6](../ROADMAP.md#milestone-6-alerting--notifications) +- [Milestone 6](../roadmap.md#milestone-6-alerting--notifications) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -830,7 +830,7 @@ Custom alert conditions ### Related Documentation -- [Milestone 7](../ROADMAP.md#milestone-7-advanced-rule-engine) +- [Milestone 7](../roadmap.md#milestone-7-advanced-rule-engine) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -854,7 +854,7 @@ Threshold-based triggers ### Related Documentation -- [Milestone 7](../ROADMAP.md#milestone-7-advanced-rule-engine) +- [Milestone 7](../roadmap.md#milestone-7-advanced-rule-engine) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -878,7 +878,7 @@ New sender detection ### Related Documentation -- [Milestone 7](../ROADMAP.md#milestone-7-advanced-rule-engine) +- [Milestone 7](../roadmap.md#milestone-7-advanced-rule-engine) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -902,7 +902,7 @@ Anomaly detection ### Related Documentation -- [Milestone 7](../ROADMAP.md#milestone-7-advanced-rule-engine) +- [Milestone 7](../roadmap.md#milestone-7-advanced-rule-engine) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -926,7 +926,7 @@ Scheduled report summaries ### Related Documentation -- [Milestone 7](../ROADMAP.md#milestone-7-advanced-rule-engine) +- [Milestone 7](../roadmap.md#milestone-7-advanced-rule-engine) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -954,7 +954,7 @@ DNS record health checks ### Related Documentation -- [Milestone 8](../ROADMAP.md#milestone-8-dns-health--cloudflare-integration) +- [Milestone 8](../roadmap.md#milestone-8-dns-health--cloudflare-integration) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -978,7 +978,7 @@ SPF/DKIM/DMARC validation ### Related Documentation -- [Milestone 8](../ROADMAP.md#milestone-8-dns-health--cloudflare-integration) +- [Milestone 8](../roadmap.md#milestone-8-dns-health--cloudflare-integration) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1002,7 +1002,7 @@ Cloudflare API integration ### Related Documentation -- [Milestone 8](../ROADMAP.md#milestone-8-dns-health--cloudflare-integration) +- [Milestone 8](../roadmap.md#milestone-8-dns-health--cloudflare-integration) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1026,7 +1026,7 @@ Configuration recommendations ### Related Documentation -- [Milestone 8](../ROADMAP.md#milestone-8-dns-health--cloudflare-integration) +- [Milestone 8](../roadmap.md#milestone-8-dns-health--cloudflare-integration) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1050,7 +1050,7 @@ DNS change tracking ### Related Documentation -- [Milestone 8](../ROADMAP.md#milestone-8-dns-health--cloudflare-integration) +- [Milestone 8](../roadmap.md#milestone-8-dns-health--cloudflare-integration) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1078,7 +1078,7 @@ Forensic report parsing ### Related Documentation -- [Milestone 9](../ROADMAP.md#milestone-9-forensic-reports) +- [Milestone 9](../roadmap.md#milestone-9-forensic-reports) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1102,7 +1102,7 @@ Failure sample analysis ### Related Documentation -- [Milestone 9](../ROADMAP.md#milestone-9-forensic-reports) +- [Milestone 9](../roadmap.md#milestone-9-forensic-reports) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1126,7 +1126,7 @@ PII redaction options ### Related Documentation -- [Milestone 9](../ROADMAP.md#milestone-9-forensic-reports) +- [Milestone 9](../roadmap.md#milestone-9-forensic-reports) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1150,7 +1150,7 @@ Detailed authentication failure views ### Related Documentation -- [Milestone 9](../ROADMAP.md#milestone-9-forensic-reports) +- [Milestone 9](../roadmap.md#milestone-9-forensic-reports) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1174,7 +1174,7 @@ Sample download/export ### Related Documentation -- [Milestone 9](../ROADMAP.md#milestone-9-forensic-reports) +- [Milestone 9](../roadmap.md#milestone-9-forensic-reports) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1211,7 +1211,7 @@ Part of the **Security Remediation Sprint** - Priority: **CRITICAL** ### Related Documentation - [SECURITY.md](../SECURITY.md) -- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress) +- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1242,7 +1242,7 @@ Part of the **Security Remediation Sprint** - Priority: **CRITICAL** ### Related Documentation - [SECURITY.md](../SECURITY.md) -- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress) +- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1273,7 +1273,7 @@ Part of the **Security Remediation Sprint** - Priority: **HIGH** ### Related Documentation - [SECURITY.md](../SECURITY.md) -- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress) +- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1306,7 +1306,7 @@ Part of the **Security Remediation Sprint** - Priority: **HIGH** ### Related Documentation - [SECURITY.md](../SECURITY.md) -- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress) +- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1333,7 +1333,7 @@ Part of the **Security Remediation Sprint** - Priority: **MEDIUM** ### Related Documentation - [SECURITY.md](../SECURITY.md) -- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress) +- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1363,7 +1363,7 @@ Part of the **Security Remediation Sprint** - Priority: **MEDIUM** ### Related Documentation - [SECURITY.md](../SECURITY.md) -- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress) +- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress) --- *This issue was auto-generated from the DMARQ roadmap.* @@ -1390,7 +1390,7 @@ Part of the **Security Remediation Sprint** - Priority: **MEDIUM** ### Related Documentation - [SECURITY.md](../SECURITY.md) -- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress) +- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress) --- *This issue was auto-generated from the DMARQ roadmap.* diff --git a/mkdocs.yml b/mkdocs.yml index cc83f8d..85bbe73 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -45,6 +45,8 @@ nav: - Contributing: development/contributing.md - Testing: development/testing.md - Roadmap: development/roadmap.md + - Agentic Coding: development/agents.md + - Issue Generation: development/issue_generation.md - FAQ: faq.md - Changelog: changelog.md diff --git a/pyproject.toml b/pyproject.toml index 5b050f3..411ee8d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,25 @@ +[project] +name = "dmarq" +version = "0.3.0" +description = "A modern, privacy-conscious DMARC monitoring and analysis platform" +readme = "README.md" +license = {text = "MIT"} +requires-python = ">=3.10" + +[tool.semantic_release] +version_toml = ["pyproject.toml:project.version"] +version_variables = ["backend/app/__init__.py:__version__"] +commit_message = "chore(release): v{version}" +tag_format = "v{version}" +build_command = "python3 scripts/sync_version.py" +upload_to_pypi = false + +[tool.semantic_release.changelog] +changelog_file = "CHANGELOG.md" + +[tool.semantic_release.branches.main] +match = "main" + [tool.black] line-length = 100 target-version = ['py310'] diff --git a/scripts/generate_issues.py b/scripts/generate_issues.py index 3136008..037dcc2 100644 --- a/scripts/generate_issues.py +++ b/scripts/generate_issues.py @@ -84,7 +84,7 @@ class RoadmapParser: "### Related Documentation", "", "- [SECURITY.md](../SECURITY.md)", - "- [Security Remediation Sprint](../ROADMAP.md#security-remediation-sprint-priority---in-progress)", + "- [Security Remediation Sprint](../roadmap.md#security-remediation-sprint-priority---in-progress)", "", "---", "*This issue was auto-generated from the DMARQ roadmap.*" @@ -166,7 +166,7 @@ class RoadmapParser: body_parts.extend([ "### Related Documentation", "", - f"- [Milestone {milestone_num}](../ROADMAP.md#milestone-{milestone_num}-{milestone_name.lower().replace(' ', '-').replace('&', '').replace('(', '').replace(')', '')})", + f"- [Milestone {milestone_num}](../roadmap.md#milestone-{milestone_num}-{milestone_name.lower().replace(' ', '-').replace('&', '').replace('(', '').replace(')', '')})", "", "---", "*This issue was auto-generated from the DMARQ roadmap.*" @@ -211,7 +211,7 @@ class RoadmapParser: "", "### Related Documentation", "", - f"- [Milestone {milestone_num}](../ROADMAP.md#milestone-{milestone_num}-{milestone_name.lower().replace(' ', '-').replace('&', '').replace('(', '').replace(')', '')})", + f"- [Milestone {milestone_num}](../roadmap.md#milestone-{milestone_num}-{milestone_name.lower().replace(' ', '-').replace('&', '').replace('(', '').replace(')', '')})", "- [SECURITY.md](../SECURITY.md)", "", "---", @@ -290,7 +290,7 @@ class RoadmapParser: "", "### Related Documentation", "", - "- [Continuous Improvements](../ROADMAP.md#continuous-improvements-ongoing)", + "- [Continuous Improvements](../roadmap.md#continuous-improvements-ongoing)", "", "---", "*This issue was auto-generated from the DMARQ roadmap.*" @@ -452,8 +452,8 @@ def save_github_import_script(issues: List[Issue], output_path: Path): def main(): """Main function.""" repo_root = Path(__file__).parent.parent - roadmap_path = repo_root / "ROADMAP.md" - output_dir = repo_root / "generated_issues" + roadmap_path = repo_root / "docs" / "development" / "roadmap.md" + output_dir = repo_root / "docs" / "development" / "generated_issues" output_dir.mkdir(exist_ok=True) print("=" * 60) diff --git a/scripts/sync_version.py b/scripts/sync_version.py new file mode 100644 index 0000000..b36166b --- /dev/null +++ b/scripts/sync_version.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +"""Sync the VERSION file from pyproject.toml after a version bump.""" +import re +from pathlib import Path + +root = Path(__file__).resolve().parent.parent + +toml_content = (root / "pyproject.toml").read_text() +match = re.search( + r'^\[project\]\s*\n(?:.*\n)*?version\s*=\s*"([^"]+)"', + toml_content, + re.MULTILINE, +) +if match: + version = match.group(1) + (root / "VERSION").write_text(version + "\n")