Skip to content

Latest commit

 

History

History
537 lines (489 loc) · 25 KB

CHANGELOG.md

File metadata and controls

537 lines (489 loc) · 25 KB

Emogrifier Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

x.y.z

Added

  • Add support for PHP 7.4 (#821)
  • 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

  • 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)
  • Upgrade to Symfony 5.0 (#822)
  • 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 the Emogrifier class (#774)
  • Drop support for PHP 5.6 (#773)

Fixed

  • Actually use the specified PHP version on GitHub actions (#836)
  • Support ci:php:lint on Windows (#740, #780)

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: @imports 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