mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-27 12:38:44 +02:00
449 lines
16 KiB
Markdown
449 lines
16 KiB
Markdown
# Emogrifier Change Log
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
This project adheres to [Semantic Versioning](https://semver.org/).
|
||
|
||
## x.y.z
|
||
|
||
### Added
|
||
|
||
### Changed
|
||
|
||
### Deprecated
|
||
|
||
### Removed
|
||
|
||
### Fixed
|
||
|
||
## 7.2.0: Add support for Symfony 7
|
||
|
||
### Added
|
||
- Add support for Symfony 7 (#1243)
|
||
|
||
## 7.1.0: Add support for PHP 8.3
|
||
|
||
### Added
|
||
- Add support for PHP 8.3 (#1218)
|
||
|
||
### Changed
|
||
- Disable HTML formatting by default (#1214)
|
||
|
||
## 7.0.0
|
||
|
||
### Added
|
||
- Add support for PHP 8.2 (#1155)
|
||
|
||
### Changed
|
||
- Throw exception with invalid CSS in debug mode (#1142)
|
||
- Only support up to 69 atomic expressions in a selector (#1113)
|
||
- Require `sabberworm/php-css-parser:^8.4.0` (#1134)
|
||
- Upgrade to PHPUnit 9 (#1112)
|
||
|
||
### Deprecated
|
||
- Support for PHP 7.3 will be removed in Emogrifier 8.0.
|
||
|
||
### Removed
|
||
- Drop support for Symfony 3.x and 5.3 (#1120, #1162)
|
||
- Drop support for PHP 7.2 (#1111)
|
||
|
||
### Fixed
|
||
- Bump the minimum Symfony 4.4 version to avoid PHP deprecation warnings (#1187)
|
||
|
||
## 6.0.0
|
||
|
||
### Added
|
||
- Test with Symfony 6-dev (#1109)
|
||
- Add support for PHP 8.1 (#1103)
|
||
- Add a dedicated class for caching (#1097)
|
||
- Allow installation together with Symfony 6 (#1065)
|
||
- Support more file types in the `.editorconfig` (#1035)
|
||
- Set `align` attribute of `<th>` elements with `CssToAttributeConverter` (#1008)
|
||
|
||
### Changed
|
||
- Use `sabberworm/php-css-parser` to parse the CSS (#1015)
|
||
- Also check the unit test code with Psalm (#1003)
|
||
|
||
### Deprecated
|
||
- Support for PHP 7.2 will be removed in Emogrifier 7.0.
|
||
|
||
### Removed
|
||
- Remove a redundant CSS data cache (#1018)
|
||
- Drop support for Symfony 5.1 and 5.2 (#972, #1104)
|
||
- Drop support for PHP 7.1 (#967)
|
||
|
||
### Fixed
|
||
- Allow `@import` after ignored invalid `@charset` (@1081)
|
||
- Allow line feeds within `<html>` tag (#987)
|
||
|
||
## 5.0.1
|
||
|
||
### Changed
|
||
- Switch the default branch from `master` to `main` (#951)
|
||
|
||
### Fixed
|
||
- Ignore `http-equiv` `Content-Type` in `<body>` (#961)
|
||
- Allow "Content-Type" in content (#959)
|
||
|
||
## 5.0.0
|
||
|
||
### Added
|
||
- Add an `.editorconfig` file (#940)
|
||
- Support PHP 8.0 (#926)
|
||
- Run the CI build once a week (#933)
|
||
- Move more development tools to PHIVE (#894, #907)
|
||
|
||
### Changed
|
||
- Automatically add a backslash for global functions (#909)
|
||
- Update the development tools (#898, #895)
|
||
- Upgrade to PHPUnit 7.5 (#888)
|
||
- Enforce constant visibility (#892)
|
||
- Rename the PHPCS configuration file (#891, #896)
|
||
- Make use of PHP 7.1 language features (#883)
|
||
|
||
### Deprecated
|
||
- Support for PHP 7.1 will be removed in Emogrifier 6.0.
|
||
|
||
### Removed
|
||
- Drop support for Symfony 4.3 and 5.0 (#936)
|
||
- Stop checking `tests/` with Psalm (#885)
|
||
- Drop support for PHP 7.0 (#880)
|
||
|
||
### Fixed
|
||
- Fix a nonsensical code example in the README (#920, #935)
|
||
- Remove `!important` from `style` attributes also when uppercase, mixed case or
|
||
having whitespace after `!` (#911)
|
||
- Copy rules using `:...of-type` without a type to the `<style>` element (#904)
|
||
- Support combinator followed by dynamic pseudo-class in minified CSS (#903)
|
||
- Preserve all uninlinable (or otherwise unprocessed) at-rules (#899)
|
||
- Allow Windows CLI to run development tools installed through PHIVE (#900)
|
||
- Switch to a maintained package for parallel PHP linting (#884)
|
||
- Add `.0` version suffixes to PHP version requirements (#881)
|
||
|
||
## 4.0.0
|
||
|
||
### Added
|
||
- Extract and inject `@font-face` rules into head (#870)
|
||
- Test tag omission in conformant supplied HTML (#868)
|
||
- Check for missing return type hint annotations in the code sniffs (#860)
|
||
- Support `:only-of-type` (with a type) (#849, #856)
|
||
- Configuration setting methods now all return `$this` to allow chaining (#824, #854)
|
||
- Disable php-cs-fixer Yoda conditions (#791, #794)
|
||
- Check the code with psalm (#537, #779)
|
||
- Composer script to run tests with `--stop-on-failure` (#782)
|
||
- Test universal selector with combinators (#776)
|
||
|
||
### Changed
|
||
- Normalize DOCTYPE declaration according to polyglot markup recommendation (#866)
|
||
- Upgrade to V2 of the PHP setup GitHub action (#861)
|
||
- Move the development tools to PHIVE (#850, #851)
|
||
- Switch the parallel linting to a maintained fork (#842)
|
||
- Move continuous integration from Travis CI to GitHub actions (#832, #834, #838, #839, #840, #841, #843, #846, #849)
|
||
- Clean up the folder structure and autoloading configuration (#529, #785)
|
||
- Use `self` as the return type for `fromHtml` (#784)
|
||
- Make use of PHP 7.0 language features (#777)
|
||
|
||
### Deprecated
|
||
- Support for PHP 7.0 will be removed in Emogrifier 5.0.
|
||
|
||
### Removed
|
||
- Drop support for Symfony versions that have reached their end of life (#847)
|
||
- Drop the `Emogrifier` class (#774)
|
||
- Drop support for PHP 5.6 (#773)
|
||
|
||
### Fixed
|
||
- Allow `:last-of-type` etc. without type, without causing exception (#875)
|
||
- Make sure to use the Composer-installed development tools (#862, #865)
|
||
- Add missing `<head>` element when there's a `<header>` element (#844, #853)
|
||
- Fix mapping width/height when decimal is used (#845)
|
||
- Actually use the specified PHP version on GitHub actions (#836)
|
||
- Support `ci:php:lint` on Windows (#740, #780)
|
||
|
||
## 3.1.0
|
||
|
||
### Added
|
||
- Add support for PHP 7.4 (#821, #829)
|
||
|
||
### Changed
|
||
- Upgrade to Symfony 5.0 (#820)
|
||
|
||
## 3.0.0
|
||
|
||
### Added
|
||
- Test and document excluding entire subtree with `addExcludedSelector()` (#347, #768)
|
||
- Test that rules with `:optional` or `:required` are copied to the `<style>`
|
||
element (#748, #765)
|
||
- Test that rules with `:only-of-type` are copied to the `<style>` element (#748, #760)
|
||
- Support `:last-of-type` (#748, #758)
|
||
- Support `:first-of-type` (#748, #757)
|
||
- Support `:empty` (#748, #756)
|
||
- Test that rules with `:any-link` are copied to the `<style>` element (#748, #755)
|
||
- Support and test `:only-child` (#747, #754)
|
||
- Support and test `:nth-last-of-type` (#747, #751)
|
||
- Support and test `:nth-last-child` (#747, #750)
|
||
- Support and test general sibling combinator (#723, #745)
|
||
- Test universal selector with combinators (#723, #743)
|
||
- Preserve `display: none` elements with `-emogrifier-keep` class (#252, #737)
|
||
- Preserve valid `@import` rules (#338, #334, #732, #735)
|
||
- Add `HtmlPruner::removeRedundantClassesAfterCssInlined` (#380, #724)
|
||
- Check on Travis that PHP-CS-Fixer will not change anything (#727)
|
||
- Support `:not(…)` as an entire selector (#469, #725)
|
||
- Add `HtmlPruner::removeRedundantClasses` (#380, #708)
|
||
- Support multiple attributes selectors (#385, #721)
|
||
- Support `> :first-child` and `> :last-child` in selectors (#384, #720)
|
||
- Add an `ArrayIntersector` class (#708, #710)
|
||
- Add `CssInliner::getMatchingUninlinableSelectors` (#380, #707)
|
||
- Add tests for `:nth-child` and `:nth-of-type` (#71, #698)
|
||
|
||
### Changed
|
||
- Relax the dependency on `symfony/css-selector` (#762)
|
||
- Rename `HtmlPruner::removeInvisibleNodes` to
|
||
`HtmlPruner::removeElementsWithDisplayNone` (#717, #718)
|
||
- Mark the utility classes as internal (#715)
|
||
- Move utility classes to the `Pelago\Emogrifier\Utilities` namespace (#712)
|
||
- Make the `$css` parameter of the `inlineCss` method optional (#700)
|
||
- Update the development dependencies (#691)
|
||
|
||
### Deprecated
|
||
- Support for PHP 5.6 will be removed in Emogrifier 4.0.
|
||
- Deprecate the `Emogrifier` class (#701)
|
||
|
||
### Removed
|
||
- Drop `enableCssToHtmlMapping` and `disableInvisibleNodeRemoval` (#692)
|
||
- Drop support for PHP 5.5 (#690)
|
||
|
||
### Fixed
|
||
- Fix PhpStorm code inspection warnings (#729, #770)
|
||
- Uppercase type combined with class or ID in selector (#590, #769)
|
||
- Dynamic pseudo-class combined with static one (rules copied to `<style>`
|
||
element, #746)
|
||
- Descendant attribute selectors (such as `html input[disabled]`) (#375, #709)
|
||
- Attribute selectors with hyphen in attribute name (#284, #540, #704)
|
||
- Attribute selectors with space, hyphen, colon, semicolon or (most) other
|
||
non-alphanumeric characters in attribute value (#284, #333, #550, #540, #704)
|
||
- Don’t create empty `style` attributes for unparsable declarations (#259, #702)
|
||
- Allow `:not(:behavioural-pseudo-class)` in selectors (#697, #703)
|
||
|
||
## 2.2.0
|
||
|
||
### Added
|
||
- Add a `HtmlPruner` class (#679)
|
||
- Add `AbstractHtmlProcessor::fromDomDocument` (#676)
|
||
- Add `AbstractHtmlProcessor::fromHtml` (#675)
|
||
|
||
### Changed
|
||
- Make the closures static (#674)
|
||
- Keep `<wbr>` elements by default with `CssInliner` (#665)
|
||
- Make the `CssInliner` inherit `AbstractHtmlProcessor` (#660)
|
||
- Separate `CssInliner::inlineCss` and the rendering (#654)
|
||
|
||
### Removed
|
||
- Drop the removal of unprocessable tags from `CssInliner` (#685)
|
||
- Drop the removal of invisible nodes from `CssInliner` (#684)
|
||
|
||
### Fixed
|
||
- Remove opening `<body>` tag from `body` content when element has attribute(s) (#677, #683)
|
||
- Keep development files out of the Composer packages (#678)
|
||
- Call all static methods statically in `CssConcatenator` (#670)
|
||
- Support all HTML5 self-closing tags, including `<embed>`, `<source>`,
|
||
`<track>` and `<wbr>` (#653)
|
||
- Remove all "unprocessable" (e.g. `<wbr>`) tags (#650)
|
||
- Correct translated xpath of `:nth-child` selector (#648)
|
||
|
||
## 2.1.1
|
||
|
||
### Changed
|
||
- Add a test that a missing document type gets added (#641)
|
||
|
||
### Fixed
|
||
- Keep the `style` element the `head` (#642)
|
||
|
||
## 2.1.0
|
||
|
||
### Added
|
||
- PHP 7.3 support (#638)
|
||
- Allow PHP 7.3 in `composer.json`
|
||
- Test in Travis for PHP 7.3
|
||
- Add a `renderBodyContent()` method (#633)
|
||
- Add a `getDomDocument()` method (#630)
|
||
- Add a Composer script for PHP CS Fixer (#607)
|
||
- Copy matching rules with dynamic pseudo-classes or pseudo-elements in
|
||
selectors to the style element (#280, #562, #567)
|
||
- Add a CssToAttributeConverter (#546)
|
||
- Expose the DOMDocument in AbstractHtmlProcessor (#520)
|
||
- Add an HtmlNormalizer class (#513, #516)
|
||
- Add a CssInliner class (#514, #522)
|
||
- Composer scripts for the various CI build steps
|
||
- Validate the composer.json on Travis (#476)
|
||
|
||
### Changed
|
||
- Mark the work-in-progress classes as `@internal` (#640)
|
||
- Remove the unprocessable tags from the DOM, not from the raw HTML (#627)
|
||
- Reject empty HTML in `setHtml()` (#622)
|
||
- Stop passing the DOM document around (#618)
|
||
- Improve performance by using explicit namespaces for PHP functions (#573, #576)
|
||
- Add type hint checking to the code sniffs (#566)
|
||
- Check the code with PHPMD (#561)
|
||
- Add the cyclomatic complexity to the checked code sniffs (#558)
|
||
- Use the Symfony CSS selector component (#540)
|
||
|
||
### Deprecated
|
||
- Support for PHP 5.5 will be removed in Emogrifier 3.0.
|
||
- Support for PHP 5.6 will be removed in Emogrifier 4.0.
|
||
- The removal of invisible nodes will be removed in Emogrifier 3.0. (#473)
|
||
- Converting CSS styles to (non-CSS) HTML attributes will be removed
|
||
in Emogrifier 3.0. Please use the new CssToAttributeConverter instead. (#474)
|
||
- Emogrifier 3.x.y will be the last release that supports usage without
|
||
Composer (i.e., you can still require the class file).
|
||
Starting with version 4.0, Emogrifier will only work with Composer.
|
||
- The Emogrifier class will be superseded by CssInliner class in
|
||
Emogrifier 3.0. For this, the Emogrifier class will be deprecated for
|
||
version 3.0 and removed for version 4.0.
|
||
|
||
### Removed
|
||
- Drop the `@version` PHPDoc annotations (#637)
|
||
- Drop the destructors (#619)
|
||
|
||
### Fixed
|
||
- Add required XML PHP extension to `composer.json` (#614)
|
||
- Add required DOM PHP extension to `composer.json` (#595)
|
||
- Escape hyphens in regular expressions (#588)
|
||
- Fix Travis for PHP 5.x (#589)
|
||
- Allow CSS between empty `@media` rule and another `@media` rule (#534)
|
||
- Allow additional whitespace in media-query-list of disallowed `@media` rules (#532)
|
||
- Allow multiple minified `@import` rules in the CSS without error (note:
|
||
`@import`s are currently ignored, #527)
|
||
- Style property ordering when multiple mixed individual and shorthand
|
||
properties apply (#511, #508)
|
||
- Calculation of selector precedence for selectors involving pseudo-classes
|
||
and/or attributes (#502)
|
||
- Allow `@charset` in the CSS without error (note: its value is currently
|
||
ignored, #507)
|
||
- Allow attribute selectors in descendants (#506, #381, #443)
|
||
- Allow adjacent sibling CSS selector combinator in minified CSS (#505)
|
||
- Allow CSS property values containing newlines (#504)
|
||
|
||
## 2.0.0
|
||
|
||
### Added
|
||
- Support for CSS :not() selector (#431)
|
||
- Automatically remove !important annotations from final inline style declarations (#420)
|
||
- Automatically move `<style>` block from `<head>` to `<body>` (#396)
|
||
- PHP 7.2 support (#398)
|
||
- Allow PHP 7.2 in `composer.json`, cleaner PHP version constraint
|
||
- Test in Travis for PHP 7.2
|
||
- Debug mode. Throw debug exceptions only if debug is active. (#392)
|
||
|
||
### Changed
|
||
- Test with latest and oldest dependencies on Travis (#463)
|
||
- Always enable the debug mode in the tests (#448)
|
||
- Optimize the string operations (#430)
|
||
|
||
### Deprecated
|
||
- Support for PHP 5.5 will be removed in Emogrifier 3.0.
|
||
- Support for PHP 5.6 will be removed in Emogrifier 4.0.
|
||
|
||
### Removed
|
||
- Drop support for PHP 5.4 (#422)
|
||
- Drop support for HHVM (#386)
|
||
|
||
### Fixed
|
||
- Handle invalid/unrecognized selectors in media query blocks (#442)
|
||
- Throw (the correct) exception for invalid excluded selectors (#437)
|
||
- emogrifyBody must not encode umlaut entities (#414)
|
||
- Fix mapped HTML attribute values (#405)
|
||
- Make sure the HTML always has a BODY element (#410)
|
||
- Make inline style priority higher than css block priority (#404)
|
||
- Fix media regex parsing (#402)
|
||
- Silence purposefully ignored PHP Warnings (#400)
|
||
|
||
## 1.2.0 (2017-03-02)
|
||
|
||
### Added
|
||
- Handling invalid xPath expression warnings (#361)
|
||
|
||
### Deprecated
|
||
- Support for PHP 5.5 will be removed in Emogrifier 3.0.
|
||
- Support for PHP 5.4 will be removed in Emogrifier 2.0.
|
||
|
||
### Fixed
|
||
- Allow colon (`:`) and semi-colon (`;`) when using the `*=` selector (#371)
|
||
- Ignore "auto" width and height (#365)
|
||
|
||
## 1.1.0 (2016-09-18)
|
||
|
||
### Added
|
||
- Add support for PHP 7.1 (#342)
|
||
- Support the attr|=value selector (#337)
|
||
- Support the attr*=value selector (#330)
|
||
- Support the attr$=value selector (#329)
|
||
- Support the attr^=value selector (#324)
|
||
- Support the attr~=value selector (#323)
|
||
- Add CSS to HTML attribute mapper (#288)
|
||
|
||
### Changed
|
||
- Remove composer dependency from PHP mbstring extension (Actual code dependency were removed a lot of time ago) (#295)
|
||
|
||
### Deprecated
|
||
- Support for PHP 5.5 will be removed in Emogrifier 3.0.
|
||
- Support for PHP 5.4 will be removed in Emogrifier 2.0.
|
||
|
||
### Fixed
|
||
- Method emogrifyBodyContent() doesn't keeps utf8 umlauts (#349)
|
||
- Ignore value with words more than one in the attribute selector (#327)
|
||
- Ignore spaces around the > in the direct child selector (#322)
|
||
- Ignore empty media queries (#307) (#237)
|
||
- Ignore pseudo-class when combined with pseudo-element (#308)
|
||
- First-child and last-child selectors are broken (#293)
|
||
- Second !important rule needs to overwrite the first one (#292)
|
||
|
||
## 1.0.0 (2015-10-15)
|
||
|
||
### Added
|
||
- Add branch alias (#231)
|
||
- Remove media queries which do not impact the document (#217)
|
||
- Allow elements to be excluded from emogrification (#215)
|
||
- Handle !important (#214)
|
||
- emogrifyBodyContent() method (#206)
|
||
- Cache combinedStyles (#211)
|
||
- Allow user to define media types to keep (#200)
|
||
- Ignore invalid CSS selectors (#194)
|
||
- isRemoveDisplayNoneEnabled option (#162)
|
||
- Allow disabling of "inline style" and "style block" parsing (#156)
|
||
- Preserve @media if necessary (#62)
|
||
- Add extraction of style blocks within the HTML
|
||
- Add several new pseudo-selectors (first-child, last-child, nth-child,
|
||
and nth-of-type)
|
||
|
||
### Changed
|
||
- Make HTML5 the default document type (#245)
|
||
- Make copyCssWithMediaToStyleNode private (#218)
|
||
- Stop encoding umlauts and dollar signs (#170)
|
||
- Convert the classes to namespaces (#41)
|
||
|
||
### Deprecated
|
||
- Support for PHP 5.4 will be removed in Emogrifier 2.0.
|
||
|
||
### Removed
|
||
- Drop support for PHP 5.3 (#114)
|
||
- Support for character sets other than UTF-8 was removed.
|
||
|
||
### Fixed
|
||
- Fix failing tests on Windows due to line endings (#263)
|
||
- Parsing CSS declaration blocks (#261)
|
||
- Fix first-child and last-child selectors (#257)
|
||
- Fix parsing of CSS for data URIs (#243)
|
||
- Fix multi-line media queries (#241)
|
||
- Keep CSS media queries even if followed by CSS comments (#201)
|
||
- Fix CSS selectors with exact attribute only (#197)
|
||
- Properly handle UTF-8 characters and entities (#189)
|
||
- Add mbstring extension to composer.json (#93)
|
||
- Prevent incorrectly capitalized CSS selectors from being stripped (#85)
|
||
- Fix CSS selectors with exact attribute only (#197)
|
||
- Wrong selector extraction from minified CSS (#69)
|
||
- Restore libxml error handler state after clearing (#65)
|
||
- Ignore all warnings produced by DOMDocument::loadHTML() (#63)
|
||
- Style tags in HTML cause an Xpath invalid query error (#60)
|
||
- Fix PHP warnings with PHP 5.5 (#26)
|
||
- Make removal of invisible nodes operate in a case-insensitive manner
|
||
- Fix a bug that was overwriting existing inline styles from the original HTML
|