|
1 | 1 | # Change Log for the PHP MJML Renderer |
| 2 | + |
2 | 3 | All notable changes to this project will be documented in this file. |
3 | 4 |
|
4 | 5 | This projects adheres to [Semantic Versioning](https://semver.org/) and [Keep a CHANGELOG](https://keepachangelog.com/). |
5 | 6 |
|
| 7 | +## [1.0.0] - 2025-11-03 |
| 8 | + |
| 9 | +### Added |
| 10 | + |
| 11 | +**Complete MJML Support - All 27 Standard Elements Implemented** |
| 12 | + |
| 13 | +#### Head Components |
| 14 | +- `<mj-head>` - Document head wrapper |
| 15 | +- `<mj-title>` - Email title element |
| 16 | +- `<mj-preview>` - Preview text for email clients |
| 17 | +- `<mj-font>` - External font imports (Google Fonts, etc.) |
| 18 | +- `<mj-style>` - Custom CSS with inline/embedded modes |
| 19 | +- `<mj-breakpoint>` - Responsive breakpoint configuration |
| 20 | +- `<mj-attributes>` - Global attribute defaults |
| 21 | +- `<mj-html-attributes>` - Custom HTML attributes via CSS selectors |
| 22 | + |
| 23 | +#### Layout Components |
| 24 | +- `<mj-body>` - Email body wrapper |
| 25 | +- `<mj-section>` - Horizontal layout sections |
| 26 | +- `<mj-column>` - Column containers within sections |
| 27 | +- `<mj-wrapper>` - Full-width background wrapper for sections |
| 28 | +- `<mj-group>` - Non-stacking column groups for mobile |
| 29 | +- `<mj-hero>` - Hero images with overlay content (fixed/fluid height modes) |
| 30 | + |
| 31 | +#### Content Components |
| 32 | +- `<mj-text>` - Text content with full typography control |
| 33 | +- `<mj-button>` - Call-to-action buttons with extensive styling |
| 34 | +- `<mj-image>` - Responsive images with srcset support |
| 35 | +- `<mj-divider>` - Horizontal dividers with customizable styles |
| 36 | +- `<mj-spacer>` - Vertical spacing control |
| 37 | +- `<mj-table>` - HTML tables with MJML styling |
| 38 | + |
| 39 | +#### Interactive Components |
| 40 | +- `<mj-accordion>`, `<mj-accordion-element>`, `<mj-accordion-title>`, `<mj-accordion-text>` - Collapsible FAQ sections |
| 41 | +- `<mj-carousel>`, `<mj-carousel-image>` - Image carousels with navigation |
| 42 | +- `<mj-navbar>`, `<mj-navbar-link>` - Navigation menus |
| 43 | +- `<mj-social>`, `<mj-social-element>` - Social media icon links |
| 44 | + |
| 45 | +#### Utility Components |
| 46 | +- `<mj-raw>` - Raw HTML passthrough |
| 47 | +- `<mj-include>` - File inclusion for modular templates |
| 48 | + |
| 49 | +#### Testing & Quality |
| 50 | +- 340+ unit tests covering all elements |
| 51 | +- 16 end-to-end tests with real-world email templates |
| 52 | +- 7 performance benchmarks |
| 53 | +- PHPStan level 8 static analysis |
| 54 | +- PSR-12 coding standards compliance |
| 55 | +- Pre-commit hooks via CaptainHook |
| 56 | + |
| 57 | +#### Documentation |
| 58 | +- Comprehensive README with usage examples |
| 59 | +- CONTRIBUTING.md with development guidelines |
| 60 | +- Performance benchmarks and metrics |
| 61 | +- Complete API documentation |
| 62 | + |
| 63 | +#### Performance |
| 64 | +- Excellent rendering speed (0.3ms for simple emails, 1.2ms for complex) |
| 65 | +- Low memory footprint (< 1MB for typical emails) |
| 66 | +- Pure PHP implementation - no Node.js required |
| 67 | +- No external API dependencies |
| 68 | + |
| 69 | +### Technical Details |
| 70 | +- PHP 8.1+ required with strict types |
| 71 | +- Full type safety throughout codebase |
| 72 | +- Extensive attribute validation |
| 73 | +- Responsive HTML output |
| 74 | +- Email client compatibility focus |
6 | 75 |
|
7 | | -[Unreleased]: https://github.com/dingo-d/php-mjml-renderer/compare/main...HEAD |
| 76 | +[1.0.0]: https://github.com/dingo-d/php-mjml-renderer/releases/tag/1.0.0 |
| 77 | +[Unreleased]: https://github.com/dingo-d/php-mjml-renderer/compare/1.0.0...HEAD |
0 commit comments