Getting started
Installation & Setup
Video Tutorials
Administration
Audience Management
Email Marketing
Plug-Ins & Add-Ons
Developers
Advanced
Help
What’s New in v5.7.3
🎯 Release Highlights
This release focuses on operational reliability, security hardening, and campaign monitoring capabilities.
- 🚀 Stuck Campaign Detector - Automated detection and recovery system for stuck campaigns with webhook notifications
- 🔒 Security Enhancements - Password change validation and XSS prevention measures
- ✉️ Journey Email Reliability - Fixed critical Reply-To validation issues preventing email delivery
- 📊 Campaign Monitoring - Enhanced admin reporting with improved UI and stuck campaign management
- 🛠️ Developer Tools - MySQL slow query analysis and comprehensive log management
- ⚡ Performance Optimization - Database indexing for link click deduplication
🚀 Major Features
Stuck Campaign Detector (#1500)
A comprehensive automated system for detecting and managing campaigns that stop progressing due to worker failures.
Key Capabilities:
- Automated Detection: Cron job running every 5 minutes detects campaigns in 'Sending' status that have stopped progressing
- Detection Criteria:
- No workers processing pending batches
- All workers silent (LastPingedAt > 60 seconds)
- Worker assignment lost (Working batches with no ProcessID)
- Webhook Notifications: Real-time alerts with 30-minute cooldown to prevent spam
- HMAC-SHA256 signature support for security
- Comprehensive payload with campaign details and stuck reason
- Admin UI Management:
- "Stuck Campaigns" filter to view all stuck campaigns (always visible, no date filtering)
- "Unstuck" action to reset stuck batches to Pending status
- "Mark as Failed" action to cancel stuck campaigns
- Audit Trail: Complete logging in
oempro_stuck_campaigns_logtable with resolution tracking
Configuration:
STUCK_CAMPAIGN_DETECTOR_ENABLED=true
STUCK_CAMPAIGN_WEBHOOK_URL=
STUCK_CAMPAIGN_WEBHOOK_HMAC_SECRET=
STUCK_CAMPAIGN_NOTIFICATION_COOLDOWN_MINUTES=30Database Migration Required:
docker exec oempro_app bash -c "cd /var/www/html/cli/ && php5.6 dbmigrator.php migrate"Enhanced Email Sending with Comprehensive Validation
Improved email sending reliability with strict validation and error handling for journey emails.
Improvements:
- From Email Validation: Validates From email before API calls to catch issues early
- Trimming & Validation: Applied to all email fields (From, Reply-To, CC, BCC)
- Smart Reply-To Handling: Skips Reply-To field if personalization returns invalid email
- Enhanced Error Logging: Includes actual email addresses in error context for easier debugging
Impact: Prevents email sending failures at the API layer and provides clear diagnostic information.
Version 5.7.3 Upgrade Function
Automated upgrade process for smooth version transitions.
🐛 Bug Fixes
Critical Fixes
Journey Email Reply-To Validation Errors (#1497)
Problem: Journey emails failing with "Reply-To email address is invalid" errors.
Root Cause: Journey action parameters contained email addresses with trailing whitespace (e.g., "support@example.com "), which failed filter_var() validation.
Solution:
- Add
trim()to all personalized email fields (From, Reply-To, CC, BCC) - Validate Reply-To before including in API request
- Skip Reply-To entirely if personalized email is empty or invalid
- Enhanced error logging with actual email addresses for debugging
Impact: All journey emails with Reply-To addresses containing trailing whitespace can now send successfully.
Installation Theme and Permission Issues
Problem: Fresh installations failing with theme errors and permission issues.
Fixes:
- Resolved theme selection errors during installation
- Fixed file and directory permission issues
- Improved installation script robustness
UI/UX Fixes
Campaign Report Chart Overlap (#1494)
Problem: Campaign statistics chart overlapping with "Scheduled" link, making it unclickable.
Solution: Adjusted chart positioning to prevent overlap with navigation elements.
Invalid Custom Fields During Subscription (#1503)
Problem: Invalid custom field values causing subscription failures.
Solution:
- Validate custom fields during subscription process
- Skip invalid custom fields instead of failing the entire subscription
- Log warnings for invalid fields for admin review
Campaign Report Empty State Improvements (#1504, #1496)
Problem:
- "CREATE CAMPAIGN" button appearing in admin campaign report (admins shouldn't create campaigns)
- Octeth Plug-Ins page showing confusing empty state
Solutions:
- Removed CREATE CAMPAIGN button from admin campaign report empty state
- Improved Octeth Plug-Ins empty state messaging
- Updated plugin repository links to point to correct locations
✨ Enhancements & Improvements
Performance Optimization
Composite Index for Link Click Deduplication (#1501)
Added database index to improve link click statistics query performance.
Technical Details:
- Created composite index on
oempro_link_statstable:(RelCampaignID, SubscriberID, LinkID) - Optimizes deduplication queries for campaign link click reporting
- Reduces query execution time for large campaigns
Developer Tools
MySQL Slow Query Log Analysis (#1502)
New CLI command for analyzing MySQL slow query log.
Usage:
./cli/octeth.sh mysql:slow-log
./cli/octeth.sh mysql:slow-log --lines=100Features:
- View slow queries directly from CLI
- Configurable number of lines to display
- Helps identify performance bottlenecks
Enhanced Log Management (#1499)
Improved logs:reset command to include additional log files.
Now Includes:
- Daily error logs from
data/logs/ - MySQL slow query log
- Existing log files (queue logs, supervisor logs, etc.)
Usage:
./cli/octeth.sh logs:resetUI/UX Improvements
Campaign Report UI Enhancements (#1495)
Improvements:
- Better scheduled campaign display and organization
- Improved campaign metrics visibility
- Enhanced empty state messaging
- Increased column widths for Recipients/Delivered and Open/Click Rate columns for better readability
🔒 Security Improvements
Current Password Requirement for Password Changes (#1498)
Enhancement: Added current password validation when users change their passwords.
Security Benefits:
- Prevents unauthorized password changes if session is compromised
- Follows security best practices for password management
- Protects user accounts from session hijacking scenarios
Implementation:
- Users must enter current password before setting new password
- Server-side validation of current password
- Clear error messages for failed validation
XSS Prevention in DatePreset Parameter
Vulnerability: DatePreset parameter lacked input validation, potential XSS vector.
Fix:
- Implemented whitelist validation for DatePreset values
- Only allows predefined safe values (e.g., "today", "yesterday", "last7days", "last30days", "thismonth", "lastmonth")
- Rejects any unexpected or malicious input
Impact: Prevents potential cross-site scripting attacks via URL parameters.
📝 Migration Notes
Database Migrations
New Tables
oempro_stuck_campaigns_log- Audit log for stuck campaign detection and resolution- Tracks detection time, stuck reason, webhook notifications
- Records resolution method (manual unstuck, auto-resumed, marked failed)
- Stores JSON snapshots of campaign and batch data for debugging
New Indexes
- Link Click Deduplication Index - Composite index on
oempro_link_statsfor performance - Index:
(RelCampaignID, SubscriberID, LinkID)
Configuration Changes
Add to .oempro_env:
# Stuck Campaign Detector
STUCK_CAMPAIGN_DETECTOR_ENABLED=true
STUCK_CAMPAIGN_WEBHOOK_URL=
STUCK_CAMPAIGN_WEBHOOK_HMAC_SECRET=
STUCK_CAMPAIGN_NOTIFICATION_COOLDOWN_MINUTES=30
Update example file:
# Copy configuration to example file
cp .oempro_env _dockerfiles/examples/.oempro_env.example
Cron Job Changes
Add to _dockerfiles/oempro-crons.txt:
*/5 * * * * /usr/bin/php5.6 /var/www/html/cli/stuck_campaign_detector.php > /proc/1/fd/1 2>/proc/1/fd/2
Restart supervisor to apply cron changes:
./cli/octeth.sh supervisor:restart
🔄 Upgrade Steps
Prerequisites
- Backup your database and configuration files
- Ensure you're currently running v5.7.2
- Review the migration notes above
Upgrade Process
- Pull Latest Code:
- Update Configuration:
- Run Database Migrations:
- Update Docker Containers:
- Update Cron Jobs:
- Clear Application Cache:
- Verify Installation:
git fetch origin
git checkout v5.7.3
# Add new stuck campaign detector configuration to .oempro_env
nano .oempro_env
docker exec oempro_app bash -c "cd /var/www/html/cli/ && php5.6 dbmigrator.php migrate"
./cli/octeth.sh docker:pull
./cli/octeth.sh docker:up
# Cron changes are automatically applied via docker:up
# Verify cron is running:
./cli/octeth.sh supervisor:status
./cli/octeth.sh cache:flush
# Check that stuck campaign detector is running
docker exec oempro_app bash -c "php5.6 /var/www/html/cli/stuck_campaign_detector.php --help"
# Check logs
./cli/octeth.sh logs:tail
Post-Upgrade Verification
- Test Stuck Campaign Detector:
- Navigate to Admin > Campaign Reports
- Verify "Stuck Campaigns" filter appears in sidebar
- Test "Unstuck" and "Mark as Failed" actions on test campaigns
- Verify Journey Emails:
- Create test journey with email action
- Verify emails send successfully with Reply-To addresses
- Check error logs for any validation issues
- Test Security Features:
- Attempt to change user password
- Verify current password is required
- Test DatePreset parameter validation
🔧 Developer Notes
New CLI Commands
./cli/octeth.sh mysql:slow-log [--lines=N]- View MySQL slow query log- Stuck campaign detector available at:
cli/stuck_campaign_detector.php
Code Quality Improvements
- Enhanced email validation across all journey actions
- Consistent trimming and validation patterns for email fields
- Improved error context in logging for better debugging
Octeth Development Roadmap
Version | Status | Release Date | Notes |
|---|---|---|---|
v5.0.0 | Released | Jan 3rd, 2022 | 5b138d5 |
↳ v5.0.1 | Released | May 2nd, 2022 | b6ea225 |
↳ v5.0.2 | Released | Aug 17th, 2022 | f8d417f |
↳ v5.0.3 | Released | Oct 3rd, 2022 | 3240487 |
v5.1.0 | Released | Dec 26th, 2022 | 5b9a8c1 |
↳ v5.1.1 | Released | Mar 14th, 2023 | 4a467c0 |
v5.5.0 | Released | Apr 22nd, 2024 | 2862af5 |
↳ v5.5.1 | Released | Jun 24th, 2024 | 5a89324 |
↳ v5.5.2 | Released | Jul, 30th, 2024 | d4b8106 |
↳ v5.5.3 | Released | Aug, 16th, 2024 | 2d11177 |
↳ v5.5.4 | Released | Aug, 23rd, 2024 | 34fd437 |
↳ v5.5.5 | Released | Sep, 21st, 2024 | 95f665d |
v5.6.0 | Released | Mar 30th, 2025 | 188b432 |
v5.7.0 | Released | Dec 1st, 2025 | b57e2e1 |
↳ v5.7.1 | Released | Dec 4th, 2025 | 00a7640 |
↳ v5.7.2 | Released | Dec 29th, 2025 | 17af4d8 |
↳ v5.7.3 | Released | Jan 3rd, 2025 | bf57e1a |
↳ v5.7.4 | Collecting User Feedback | TBA - January 2025 | n/a |
v6.0.0 | Under Development | 2025 Q1 - TBA | n/a |
- Documentation: Check
.docs/directory for detailed guides - GitHub Issues: https://github.com/octeth/oempro/issues
For questions or issues with this release:
📞 Support
- Operations team for performance optimization work
- Security team for identifying and fixing XSS vulnerabilities
- Development team for implementing stuck campaign detection system
Special thanks to all contributors who made this release possible!
🎉 Contributors
- Enhanced error responses for email validation failures
- No breaking API changes in this release
API Changes
- Validate XSS prevention on DatePreset parameter
- Test password change flow with current password validation
- Verify stuck campaign detection with test campaigns
- Test journey email sending with various Reply-To configurations
Testing Recommendations
- Improved error context in logging for better debugging
- Consistent trimming and validation patterns for email fields
- Enhanced email validation across all journey actions
Code Quality Improvements
- Stuck campaign detector available at:
cli/stuck_campaign_detector.php ./cli/octeth.sh mysql:slow-log [--lines=N]- View MySQL slow query log
New CLI Commands
🔧 Developer Notes
cad9948e3- docs: add changelog for v5.7.2 release
Documentation (1)
72a3c892e- ui: increase column widths for Recipients/Delivered and Open/Click Rate
UI Improvements (1)
80004abfc- security: add whitelist validation for DatePreset to prevent XSSba59a14e0- security: add current password requirement for password changes (#1498)
Security (2)
2d991c3f0- enhancement: add composite index for link click deduplication (#1501)180bd3ddf- enhancement: add mysql:slow-log command to octeth.sh (#1502)25100734a- enhancement: include daily error logs and MySQL slow log in logs:reset (#1499)e10704cd0- enhancement: improve campaign report UI and scheduled campaign display (#1495)
Enhancements (4)
9f1ec6151- fix: resolve installation theme error and permission issues7fdb8c4a7- fix: validate and skip invalid custom fields during subscription (#1503)185bffd0d- fix: prevent chart from overlapping Scheduled link (#1494)293258c39- fix: improve Octeth Plug-Ins empty state and update plugin links (#1496)4476dd757- fix: remove CREATE CAMPAIGN button from campaign report empty state (#1504)2428ed56f- fix: resolve journey email Reply-To validation errors from trailing spaces (#1497)
Bug Fixes (6)
7fcf452fb- feat: add stuck campaign detector with webhook notifications (#1500)5cbcad761- feat: add upgrade function for version 5.7.3bf57e1a61- feat: enhance email sending functionality with From field validation
Features (3)
📊 Detailed Commit Log
- Test Security Features:
- Attempt to change user password
- Verify current password is required
- Test DatePreset parameter validation
- Verify Journey Emails:
- Create test journey with email action
- Verify emails send successfully with Reply-To addresses
- Check error logs for any validation issues
- Test Stuck Campaign Detector:
- Navigate to Admin > Campaign Reports
- Verify "Stuck Campaigns" filter appears in sidebar
- Test "Unstuck" and "Mark as Failed" actions on test campaigns
Post-Upgrade Verification
- Verify Installation:
- Clear Application Cache:
- Update Cron Jobs:
- Update Docker Containers:
- Run Database Migrations:
- Update Configuration:
- Pull Latest Code:
# Check that stuck campaign detector is running
docker exec oempro_app bash -c "php5.6 /var/www/html/cli/stuck_campaign_detector.php --help"
# Check logs
./cli/octeth.sh logs:tail
./cli/octeth.sh cache:flush
# Cron changes are automatically applied via docker:up
# Verify cron is running:
./cli/octeth.sh supervisor:status
./cli/octeth.sh docker:pull
./cli/octeth.sh docker:up
docker exec oempro_app bash -c "cd /var/www/html/cli/ && php5.6 dbmigrator.php migrate"
# Add new stuck campaign detector configuration to .oempro_env
nano .oempro_env
git fetch origin
git checkout v5.7.3
Upgrade Process
- Review the migration notes above
- Ensure you're currently running v5.7.2
- Backup your database and configuration files
Prerequisites
🔄 Upgrade Steps
./cli/octeth.sh supervisor:restart
Restart supervisor to apply cron changes:
*/5 * * * * /usr/bin/php5.6 /var/www/html/cli/stuck_campaign_detector.php > /proc/1/fd/1 2>/proc/1/fd/2
Add to _dockerfiles/oempro-crons.txt:
Cron Job Changes
# Copy configuration to example file
cp .oempro_env _dockerfiles/examples/.oempro_env.example
Update example file:
# Stuck Campaign Detector
STUCK_CAMPAIGN_DETECTOR_ENABLED=true
STUCK_CAMPAIGN_WEBHOOK_URL=
STUCK_CAMPAIGN_WEBHOOK_HMAC_SECRET=
STUCK_CAMPAIGN_NOTIFICATION_COOLDOWN_MINUTES=30
Add to .oempro_env:
Configuration Changes
- Link Click Deduplication Index - Composite index on
oempro_link_statsfor performance - Index:
(RelCampaignID, SubscriberID, LinkID)
New Indexes
oempro_stuck_campaigns_log- Audit log for stuck campaign detection and resolution- Tracks detection time, stuck reason, webhook notifications
- Records resolution method (manual unstuck, auto-resumed, marked failed)
- Stores JSON snapshots of campaign and batch data for debugging
New Tables
Database Migrations
📝 Migration Notes
Impact: Prevents potential cross-site scripting attacks via URL parameters.
- Rejects any unexpected or malicious input
- Only allows predefined safe values (e.g., "today", "yesterday", "last7days", "last30days", "thismonth", "lastmonth")
- Implemented whitelist validation for DatePreset values
Fix:
Vulnerability: DatePreset parameter lacked input validation, potential XSS vector.
XSS Prevention in DatePreset Parameter
- Clear error messages for failed validation
- Server-side validation of current password
- Users must enter current password before setting new password
Implementation:
- Protects user accounts from session hijacking scenarios
- Follows security best practices for password management
- Prevents unauthorized password changes if session is compromised
Security Benefits:
Enhancement: Added current password validation when users change their passwords.
Current Password Requirement for Password Changes (#1498)
🔒 Security Improvements
- Increased column widths for Recipients/Delivered and Open/Click Rate columns for better readability
- Enhanced empty state messaging
- Improved campaign metrics visibility
- Better scheduled campaign display and organization
Improvements:
Campaign Report UI Enhancements (#1495)
UI/UX Improvements
./cli/octeth.sh logs:reset
Usage:
- Existing log files (queue logs, supervisor logs, etc.)
- MySQL slow query log
- Daily error logs from
data/logs/
Now Includes:
Improved logs:reset command to include additional log files.
Enhanced Log Management (#1499)
- Helps identify performance bottlenecks
- Configurable number of lines to display
- View slow queries directly from CLI
Features:
./cli/octeth.sh mysql:slow-log
./cli/octeth.sh mysql:slow-log --lines=100
Usage:
New CLI command for analyzing MySQL slow query log.
MySQL Slow Query Log Analysis (#1502)
Developer Tools
- Reduces query execution time for large campaigns
- Optimizes deduplication queries for campaign link click reporting
- Created composite index on
oempro_link_statstable:(RelCampaignID, SubscriberID, LinkID)
Technical Details:
Added database index to improve link click statistics query performance.
Composite Index for Link Click Deduplication (#1501)
Performance Optimization
✨ Enhancements & Improvements
- Updated plugin repository links to point to correct locations
- Improved Octeth Plug-Ins empty state messaging
- Removed CREATE CAMPAIGN button from admin campaign report empty state
Solutions:
- Octeth Plug-Ins page showing confusing empty state
- "CREATE CAMPAIGN" button appearing in admin campaign report (admins shouldn't create campaigns)
Problem:
Campaign Report Empty State Improvements (#1504, #1496)
- Log warnings for invalid fields for admin review
- Skip invalid custom fields instead of failing the entire subscription
- Validate custom fields during subscription process
Solution:
Problem: Invalid custom field values causing subscription failures.
Invalid Custom Fields During Subscription (#1503)
Solution: Adjusted chart positioning to prevent overlap with navigation elements.
Problem: Campaign statistics chart overlapping with "Scheduled" link, making it unclickable.
Campaign Report Chart Overlap (#1494)
UI/UX Fixes
- Improved installation script robustness
- Fixed file and directory permission issues
- Resolved theme selection errors during installation
Fixes:
Problem: Fresh installations failing with theme errors and permission issues.
Installation Theme and Permission Issues
Impact: All journey emails with Reply-To addresses containing trailing whitespace can now send successfully.
- Enhanced error logging with actual email addresses for debugging
- Skip Reply-To entirely if personalized email is empty or invalid
- Validate Reply-To before including in API request
- Add
trim()to all personalized email fields (From, Reply-To, CC, BCC)
Solution:
Root Cause: Journey action parameters contained email addresses with trailing whitespace (e.g., "support@example.com "), which failed filter_var() validation.
Problem: Journey emails failing with "Reply-To email address is invalid" errors.
Journey Email Reply-To Validation Errors (#1497)
Critical Fixes
🐛 Bug Fixes
Automated upgrade process for smooth version transitions.
Version 5.7.3 Upgrade Function
Impact: Prevents email sending failures at the API layer and provides clear diagnostic information.
- Enhanced Error Logging: Includes actual email addresses in error context for easier debugging
- Smart Reply-To Handling: Skips Reply-To field if personalization returns invalid email
- Trimming & Validation: Applied to all email fields (From, Reply-To, CC, BCC)
- From Email Validation: Validates From email before API calls to catch issues early
Improvements:
Improved email sending reliability with strict validation and error handling for journey emails.
Enhanced Email Sending with Comprehensive Validation
docker exec oempro_app bash -c "cd /var/www/html/cli/ && php5.6 dbmigrator.php migrate"
Database Migration Required:
STUCK_CAMPAIGN_DETECTOR_ENABLED=true
STUCK_CAMPAIGN_WEBHOOK_URL=
STUCK_CAMPAIGN_WEBHOOK_HMAC_SECRET=
STUCK_CAMPAIGN_NOTIFICATION_COOLDOWN_MINUTES=30
Configuration:
- Audit Trail: Complete logging in
oempro_stuck_campaigns_logtable with resolution tracking - Admin UI Management:
- "Stuck Campaigns" filter to view all stuck campaigns (always visible, no date filtering)
- "Unstuck" action to reset stuck batches to Pending status
- "Mark as Failed" action to cancel stuck campaigns
- Webhook Notifications: Real-time alerts with 30-minute cooldown to prevent spam
- HMAC-SHA256 signature support for security
- Comprehensive payload with campaign details and stuck reason
- Detection Criteria:
- No workers processing pending batches
- All workers silent (LastPingedAt > 60 seconds)
- Worker assignment lost (Working batches with no ProcessID)
- Automated Detection: Cron job running every 5 minutes detects campaigns in 'Sending' status that have stopped progressing
Key Capabilities:
A comprehensive automated system for detecting and managing campaigns that stop progressing due to worker failures.
Stuck Campaign Detector (#1500)
🚀 Major Features
- ⚡ Performance Optimization - Database indexing for link click deduplication
- 🛠️ Developer Tools - MySQL slow query analysis and comprehensive log management
- 📊 Campaign Monitoring - Enhanced admin reporting with improved UI and stuck campaign management
- ✉️ Journey Email Reliability - Fixed critical Reply-To validation issues preventing email delivery
- 🔒 Security Enhancements - Password change validation and XSS prevention measures
- 🚀 Stuck Campaign Detector - Automated detection and recovery system for stuck campaigns with webhook notifications
This release focuses on operational reliability, security hardening, and campaign monitoring capabilities.
🎯 Release Highlights
- Documentation: 1
- UI Improvements: 1
- Security Improvements: 2
- Enhancements: 4
- Bugs Fixed: 6
- Features Added: 3
- Total Commits: 17
📊 Release Statistics
On this page
- What’s New in v5.7.3
- 🎯 Release Highlights
- 🚀 Major Features
- Stuck Campaign Detector (#1500)
- Enhanced Email Sending with Comprehensive Validation
- Version 5.7.3 Upgrade Function
- 🐛 Bug Fixes
- Critical Fixes
- Journey Email Reply-To Validation Errors (#1497)
- Installation Theme and Permission Issues
- UI/UX Fixes
- Campaign Report Chart Overlap (#1494)
- Invalid Custom Fields During Subscription (#1503)
- Campaign Report Empty State Improvements (#1504, #1496)
- ✨ Enhancements & Improvements
- Performance Optimization
- Composite Index for Link Click Deduplication (#1501)
- Developer Tools
- MySQL Slow Query Log Analysis (#1502)
- Enhanced Log Management (#1499)
- UI/UX Improvements
- Campaign Report UI Enhancements (#1495)
- 🔒 Security Improvements
- Current Password Requirement for Password Changes (#1498)
- XSS Prevention in DatePreset Parameter
- 📝 Migration Notes
- Database Migrations
- New Tables
- New Indexes
- Configuration Changes
- Cron Job Changes
- 🔄 Upgrade Steps
- Prerequisites
- Upgrade Process
- Post-Upgrade Verification
- 🔧 Developer Notes
- New CLI Commands
- Code Quality Improvements
- Octeth Development Roadmap
- 📞 Support
- 🎉 Contributors
- API Changes
- Testing Recommendations
- Code Quality Improvements
- New CLI Commands
- 🔧 Developer Notes
- Documentation (1)
- UI Improvements (1)
- Security (2)
- Enhancements (4)
- Bug Fixes (6)
- Features (3)
- 📊 Detailed Commit Log
- Post-Upgrade Verification
- Upgrade Process
- Prerequisites
- 🔄 Upgrade Steps
- Cron Job Changes
- Configuration Changes
- New Indexes
- New Tables
- Database Migrations
- 📝 Migration Notes
- XSS Prevention in DatePreset Parameter
- Current Password Requirement for Password Changes (#1498)
- 🔒 Security Improvements
- Campaign Report UI Enhancements (#1495)
- UI/UX Improvements
- Enhanced Log Management (#1499)
- MySQL Slow Query Log Analysis (#1502)
- Developer Tools
- Composite Index for Link Click Deduplication (#1501)
- Performance Optimization
- ✨ Enhancements & Improvements
- Campaign Report Empty State Improvements (#1504, #1496)
- Invalid Custom Fields During Subscription (#1503)
- Campaign Report Chart Overlap (#1494)
- UI/UX Fixes
- Installation Theme and Permission Issues
- Journey Email Reply-To Validation Errors (#1497)
- Critical Fixes
- 🐛 Bug Fixes
- Version 5.7.3 Upgrade Function
- Enhanced Email Sending with Comprehensive Validation
- Stuck Campaign Detector (#1500)
- 🚀 Major Features
- 🎯 Release Highlights
- 📊 Release Statistics
Older versions