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>
This commit is contained in:
@@ -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
|
||||||
@@ -111,10 +111,13 @@ Then visit [http://localhost:8080](http://localhost:8080)
|
|||||||
## 🧪 Development Roadmap
|
## 🧪 Development Roadmap
|
||||||
|
|
||||||
- ✅ **Milestone 1**: Basic DMARC Monitoring (up to 5 domains)
|
- ✅ **Milestone 1**: Basic DMARC Monitoring (up to 5 domains)
|
||||||
- 🔄 **Milestone 2**: Enhanced Visualization & Analysis
|
- ✅ **Milestone 2**: IMAP Integration
|
||||||
- 🔜 **Milestone 3**: Database Persistence & User Management
|
- ✅ **Milestone 3**: Database Persistence
|
||||||
- 🔜 **Milestone 4**: Email Integration & Automated Processing
|
- 🔜 **Milestone 4**: Enhanced Dashboard & Visualization
|
||||||
- 🔜 **Milestone 5**: DNS Health & Configuration Suggestions
|
- 🔜 **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
|
## 🤝 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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
"""DMARQ - DMARC monitoring and analysis platform."""
|
||||||
|
|
||||||
|
__version__ = "0.3.0"
|
||||||
|
|||||||
+39
-41
@@ -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/),
|
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).
|
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
|
### Added
|
||||||
- Initial release of DMARQ
|
- Initial release of DMARQ
|
||||||
- Domain management with basic health checks
|
- DMARC XML report parsing (supports XML, ZIP, and GZIP formats)
|
||||||
- DMARC report processing (aggregate and forensic)
|
- In-memory storage of report data for up to 5 domains
|
||||||
- Dashboard with compliance rate visualization
|
- Simple dashboard UI showing DMARC compliance statistics
|
||||||
- IMAP integration for automatic report collection
|
- Report upload via web interface
|
||||||
- User authentication and management
|
- Domain overview with compliance rates and email statistics
|
||||||
- SQLite and PostgreSQL database support
|
- Docker Compose deployment support
|
||||||
- Docker deployment option
|
- FastAPI backend with Jinja2 templates and Tailwind CSS
|
||||||
- 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
|
|
||||||
@@ -188,8 +188,8 @@ jq '.[] | select(.labels[] | contains("priority: high"))' issues.json
|
|||||||
|
|
||||||
## 📞 Support
|
## 📞 Support
|
||||||
|
|
||||||
- **Source**: Generated from [ROADMAP.md](../ROADMAP.md)
|
- **Source**: Generated from [roadmap.md](../roadmap.md)
|
||||||
- **Script**: [scripts/generate_issues.py](../scripts/generate_issues.py)
|
- **Script**: [scripts/generate_issues.py](../../../scripts/generate_issues.py)
|
||||||
- **Questions**: Open an issue in the DMARQ repository
|
- **Questions**: Open an issue in the DMARQ repository
|
||||||
|
|
||||||
## 🔒 Important Notes
|
## 🔒 Important Notes
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ Ongoing code quality tasks to maintain and improve DMARQ.
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -56,7 +56,7 @@ Ongoing security tasks to maintain and improve DMARQ.
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -83,7 +83,7 @@ Ongoing documentation tasks to maintain and improve DMARQ.
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -110,7 +110,7 @@ Ongoing community tasks to maintain and improve DMARQ.
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -138,7 +138,7 @@ Historical trend analysis
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -162,7 +162,7 @@ Comparative reporting
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -186,7 +186,7 @@ Export capabilities (PDF, CSV)
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -210,7 +210,7 @@ Scheduled reports
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -234,7 +234,7 @@ Custom dashboards
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -262,7 +262,7 @@ Multi-tenant architecture
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -286,7 +286,7 @@ API rate limiting
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -310,7 +310,7 @@ Advanced RBAC
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -334,7 +334,7 @@ SSO integration (SAML, OAuth)
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -358,7 +358,7 @@ Compliance reporting (SOC 2, GDPR)
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -382,7 +382,7 @@ High availability setup
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -406,7 +406,7 @@ Backup and disaster recovery
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -434,7 +434,7 @@ Historical trend charts (Chart.js integration)
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -458,7 +458,7 @@ Compliance rate visualizations
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -482,7 +482,7 @@ Volume and sender analytics
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -506,7 +506,7 @@ Time-series data displays
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -530,7 +530,7 @@ Domain comparison views
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -558,7 +558,7 @@ FastAPI Users integration
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -582,7 +582,7 @@ User registration and management
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -606,7 +606,7 @@ JWT-based authentication
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -630,7 +630,7 @@ Role-based access control (RBAC)
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -654,7 +654,7 @@ Password reset functionality
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -678,7 +678,7 @@ Email verification (optional)
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -706,7 +706,7 @@ Apprise integration
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -730,7 +730,7 @@ Customizable alert rules
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -754,7 +754,7 @@ Multi-channel notifications (Email, Slack, etc.)
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -778,7 +778,7 @@ Alert history and management
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -802,7 +802,7 @@ Notification preferences per user
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -830,7 +830,7 @@ Custom alert conditions
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -854,7 +854,7 @@ Threshold-based triggers
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -878,7 +878,7 @@ New sender detection
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -902,7 +902,7 @@ Anomaly detection
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -926,7 +926,7 @@ Scheduled report summaries
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -954,7 +954,7 @@ DNS record health checks
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -978,7 +978,7 @@ SPF/DKIM/DMARC validation
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1002,7 +1002,7 @@ Cloudflare API integration
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1026,7 +1026,7 @@ Configuration recommendations
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1050,7 +1050,7 @@ DNS change tracking
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1078,7 +1078,7 @@ Forensic report parsing
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1102,7 +1102,7 @@ Failure sample analysis
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1126,7 +1126,7 @@ PII redaction options
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1150,7 +1150,7 @@ Detailed authentication failure views
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1174,7 +1174,7 @@ Sample download/export
|
|||||||
|
|
||||||
### Related Documentation
|
### 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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1211,7 +1211,7 @@ Part of the **Security Remediation Sprint** - Priority: **CRITICAL**
|
|||||||
### Related Documentation
|
### Related Documentation
|
||||||
|
|
||||||
- [SECURITY.md](../SECURITY.md)
|
- [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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1242,7 +1242,7 @@ Part of the **Security Remediation Sprint** - Priority: **CRITICAL**
|
|||||||
### Related Documentation
|
### Related Documentation
|
||||||
|
|
||||||
- [SECURITY.md](../SECURITY.md)
|
- [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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1273,7 +1273,7 @@ Part of the **Security Remediation Sprint** - Priority: **HIGH**
|
|||||||
### Related Documentation
|
### Related Documentation
|
||||||
|
|
||||||
- [SECURITY.md](../SECURITY.md)
|
- [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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1306,7 +1306,7 @@ Part of the **Security Remediation Sprint** - Priority: **HIGH**
|
|||||||
### Related Documentation
|
### Related Documentation
|
||||||
|
|
||||||
- [SECURITY.md](../SECURITY.md)
|
- [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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1333,7 +1333,7 @@ Part of the **Security Remediation Sprint** - Priority: **MEDIUM**
|
|||||||
### Related Documentation
|
### Related Documentation
|
||||||
|
|
||||||
- [SECURITY.md](../SECURITY.md)
|
- [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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1363,7 +1363,7 @@ Part of the **Security Remediation Sprint** - Priority: **MEDIUM**
|
|||||||
### Related Documentation
|
### Related Documentation
|
||||||
|
|
||||||
- [SECURITY.md](../SECURITY.md)
|
- [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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
@@ -1390,7 +1390,7 @@ Part of the **Security Remediation Sprint** - Priority: **MEDIUM**
|
|||||||
### Related Documentation
|
### Related Documentation
|
||||||
|
|
||||||
- [SECURITY.md](../SECURITY.md)
|
- [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.*
|
*This issue was auto-generated from the DMARQ roadmap.*
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ nav:
|
|||||||
- Contributing: development/contributing.md
|
- Contributing: development/contributing.md
|
||||||
- Testing: development/testing.md
|
- Testing: development/testing.md
|
||||||
- Roadmap: development/roadmap.md
|
- Roadmap: development/roadmap.md
|
||||||
|
- Agentic Coding: development/agents.md
|
||||||
|
- Issue Generation: development/issue_generation.md
|
||||||
- FAQ: faq.md
|
- FAQ: faq.md
|
||||||
- Changelog: changelog.md
|
- Changelog: changelog.md
|
||||||
|
|
||||||
|
|||||||
@@ -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]
|
[tool.black]
|
||||||
line-length = 100
|
line-length = 100
|
||||||
target-version = ['py310']
|
target-version = ['py310']
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ class RoadmapParser:
|
|||||||
"### Related Documentation",
|
"### Related Documentation",
|
||||||
"",
|
"",
|
||||||
"- [SECURITY.md](../SECURITY.md)",
|
"- [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.*"
|
"*This issue was auto-generated from the DMARQ roadmap.*"
|
||||||
@@ -166,7 +166,7 @@ class RoadmapParser:
|
|||||||
body_parts.extend([
|
body_parts.extend([
|
||||||
"### Related Documentation",
|
"### 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.*"
|
"*This issue was auto-generated from the DMARQ roadmap.*"
|
||||||
@@ -211,7 +211,7 @@ class RoadmapParser:
|
|||||||
"",
|
"",
|
||||||
"### Related Documentation",
|
"### 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)",
|
"- [SECURITY.md](../SECURITY.md)",
|
||||||
"",
|
"",
|
||||||
"---",
|
"---",
|
||||||
@@ -290,7 +290,7 @@ class RoadmapParser:
|
|||||||
"",
|
"",
|
||||||
"### Related Documentation",
|
"### 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.*"
|
"*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():
|
def main():
|
||||||
"""Main function."""
|
"""Main function."""
|
||||||
repo_root = Path(__file__).parent.parent
|
repo_root = Path(__file__).parent.parent
|
||||||
roadmap_path = repo_root / "ROADMAP.md"
|
roadmap_path = repo_root / "docs" / "development" / "roadmap.md"
|
||||||
output_dir = repo_root / "generated_issues"
|
output_dir = repo_root / "docs" / "development" / "generated_issues"
|
||||||
output_dir.mkdir(exist_ok=True)
|
output_dir.mkdir(exist_ok=True)
|
||||||
|
|
||||||
print("=" * 60)
|
print("=" * 60)
|
||||||
|
|||||||
@@ -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")
|
||||||
Reference in New Issue
Block a user