All Versions
41
Latest Version
Avg Release Cycle
190 days
Latest Release
120 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v9.4.0 Changes
June 18, 2026What's Changed
๐ Deprecated
- ๐ Deprecate support for PHP 7.2 and 7.3 (#1565)
๐ Fixed
- ๐ Allow CSS containing only whitespace or comments (#1593)
- ๐ Only allow strings as
LineNamecomponents (#1590)
Full Changelog : v9.3.0...v9.4.0
-
v9.3.0 Changes
March 03, 2026โ Added
- โ Add support for modern CSS at-rules:
@layer,@scope, and@starting-style(#1549)
๐ Fixed
- ๐ Avoid double autoloading of class aliases (#1552)
๐ New Contributors
Full Changelog : v9.2.0...v9.3.0
- โ Add support for modern CSS at-rules:
-
v9.2.0 Changes
February 21, 2026โ Added
- โ Add
OutputFormat::setSpaceAroundSelectorCombinator()(#1504) - โ Add support for escaped quotes in the selectors (#1485, #1489)
- ๐ป Provide line number in exception message for mismatched parentheses in
๐ selector (#1435) - โ Add support for CSS container queries (#1400)
๐ Changed
- ๐
RuleSet\RuleContaineris renamed toRuleSet\DeclarationList(#1530, #1539) - Methods like
setRule()inRuleSetandDeclarationBlockhave been renamed
๐ tosetDeclaration(), etc. (#1521) Rule\Ruleclass is renamed toProperty\Declaration
๐ (#1508, #1512, #1513, #1522)Rule::setRule()andgetRule()are replaced withsetPropertyName()and
๐getPropertyName()(#1506)Selectoris now represented as a sequence ofSelector\Componentobjects
which can be accessed viagetComponents(), manipulated individually, or set
๐ viasetComponents()(#1478, #1486, #1487, #1488, #1494, #1496, #1536, #1537)- ๐ป
Selector::setSelector()andSelectorconstructor will now throw exception
๐ upon provision of an invalid selectior (#1498, #1502) - ๐ Clean up extra whitespace in CSS selector (#1398)
- The array keys passed to
DeclarationBlock::setSelectors()are no longer
๐ preserved (#1407)
๐ Deprecated
- ๐
RuleSet\RuleContaineris deprecated; useRuleSet\DeclarationListinstead
๐ (#1530) - ๐ Methods like
setRule()inRuleSetandDeclarationBlockare deprecated;
๐ there are direct replacements such assetDeclaration()(#1521) - ๐
Rule\Ruleclass is deprecated;Property\Declarationis a direct
๐ replacement (#1508) - ๐
Rule::setRule()andgetRule()are deprecated and replaced with
๐setPropertyName()andgetPropertyName()(#1506, #1519)
๐ Fixed
- ๐ Do not escape characters that do not need escaping in CSS string (#1444)
- ๐ Reject selector comprising only whitespace (#1433)
- ๐ Improve recovery parsing when a rogue
}is encountered (#1425, #1426) - ๐ Parse comment(s) immediately preceding a selector (#1421, #1424)
- ๐ Parse consecutive comments (#1421)
- ๐ Support attribute selectors with values containing commas in
๐DeclarationBlock::setSelectors()(#1419) - ๐ Allow
removeDeclarationBlockBySelector()to be order-insensitve (#1406) - ๐ Fix parsing of
calcexpressions when a newline immediately precedes or
๐ follows a+or-operator (#1399) - ๐ Use typesafe versions of PHP functions (#1379, #1380, #1382, #1383, #1384)
๐ New Contributors
- ๐ @scq made their first contribution in #1399
- ๐ @8ctopus made their first contribution in #1398
- ๐ @samuil-banti-wpenigne made their first contribution in #1485
Full Changelog : v9.1.0...v9.2.0
- โ Add
-
v9.1.0 Changes
September 14, 2025 -
v9.0.0 Changes
July 27, 2025โ Added
- ๐ Interface
RuleContainerforRuleSetRulemanipulation methods (#1256) ๐ Partial support for CSS Color Module Level 4:
โ Add a class diagram to the README (#482)
โ Add more tests (#449)
๐ Changed
DeclarationBlockno longer extendsRuleSetand instead has aRuleSetas
๐ a property; usegetRuleSet()to access it directly (#1194)- 0๏ธโฃ The default line (and column) number is now
null(not zero) (#1288) setPosition()(inRuleand other classes) now has fluent interface,
๐ returning itself (#1259)- ๐
RuleSet::removeRule()now only allowsRuleas the parameter
(implementing classes areAtRuleSetandDeclarationBlock);
๐ useremoveMatchingRules()orremoveAllRules()for other functions (#1255) RuleSet::getRules()andgetRulesAssoc()now only allowstringornull
as the parameter (implementing classes areAtRuleSetandDeclarationBlock)
๐ (#1253)- ๐ Initialize
KeyFrameproperties to sensible defaults (#1146) - ๐ Make
OutputFormatfinal(#1128) - ๐ Make
SelectoraRenderable(#1017) - ๐ Only allow
stringfor someOutputFormatproperties (#885) - ๐ Use more native type declarations and strict mode
๐ (#641, #772, #774, #778, #804, #841, #873, #875, #891, #922, #923, #933, #958,
๐ #964, #967, #1000, #1044, #1134, #1136, #1137, #1139, #1140, #1141, #1145,
๐ #1162, #1163, #1166, #1172, #1174, #1178, #1179, #1181, #1183, #1184, #1186,
๐ #1187, #1190, #1192, #1193, #1203) - โ Add visibility to all class/interface constants (#469)
โ Removed
- โ Remove
getLineNo()from these classes (usegetLineNumber()instead):
Comment,CSSList,SourceException,Charset,CSSNamespace,Import,
๐Rule,DeclarationBlock,RuleSet,CSSFunction,Value(#1258) - โ Remove
Rule::getColNo()(usegetColumnNumber()instead) (#1287) - Passing a string as the first argument to
getAllValues()is no longer
๐ supported and will not work;
๐ the search pattern should now be passed as the second argument (#1243) - Passing a Boolean as the second argument to
getAllValues()is no longer
๐ supported and will not work; the flag for searching in function arguments
๐ should now be passed as the third argument (#1243) - โ Remove
__toString()(#1046) - โฌ๏ธ Drop magic method forwarding in
OutputFormat(#898) - โฌ๏ธ Drop
atRuleArgs()from theAtRuleinterface (#1141) - โ Remove
OutputFormat::get()and::set()(#1108, #1110) - โฌ๏ธ Drop special support for vendor prefixes (#1083)
- โ Remove the IE hack in
Rule(#995) - โฌ๏ธ Drop
getLineNo()from theRenderableinterface (#1038) - โ Remove
OutputFormat::level()(#874) - โ Remove expansion of shorthand properties (#838)
- โ Remove
Parser::setCharset/getCharset(#808) - โ Remove
Rule::getValues()(#582) - โ Remove
Rule::setValues()(#562) - โ Remove
Document::getAllSelectors()(#561) - โ Remove
DeclarationBlock::getSelector()(#559) - โ Remove
DeclarationBlock::setSelector()(#560) - โฌ๏ธ Drop support for PHP < 7.2 (#420)
๐ Fixed
- โ Remove trailing semicolon from declaration blocks with 'compact'
๐OutputFormat(#1345) - ๐ Parse selector functions (like
:not) with comma-separated arguments (#1292) - ๐ Parse quoted attribute selector value containing comma (#1323)
- ๐ Allow comma in selectors (e.g.
:not(html, body)) (#1293) - Insert
Rulebefore sibling even with different property name
๐ (inRuleSet::addRule()) (#1270) - Ensure
RuleSet::addRule()sets non-negative column number when sibling
๐ provided (#1268) - ๐ Don't render
rgbcolors with percentage values using hex notation (#803)
๐ Documentation
- โ Add an API and deprecation policy (#720)
๐ @ziegenberg is a new contributor to this release and did a lot of the heavy
lifting. Thanks! โค๏ธ - ๐ Interface
-
v8.9.0 Changes
July 11, 2025โ Added
- ๐
RuleSet::removeMatchingRules()method
๐ (for the implementing classesAtRuleSetandDeclarationBlock) (#1249) - ๐
RuleSet::removeAllRules()method
๐ (for the implementing classesAtRuleSetandDeclarationBlock) (#1249) - โ Add Interface
CSSElement(#1231) - Methods
getLineNumberandgetColumnNumberwhich return a nullableint
for the following classes:
Comment,CSSList,SourceException,Charset,CSSNamespace,Import,
๐Rule,DeclarationBlock,RuleSet,CSSFunction,Value(#1225, #1263) Positionableinterface for CSS items that may have a position
๐ (line and perhaps column number) in the parsed CSS (#1221)
๐ Changed
- Parameters for
getAllValues()are deconflated, so it now takes three (all
optional), allowing$elementand$ruleSearchPatternto be specified
๐ separately (#1241) - Implement
Positionablein the following CSS item classes:
Comment,CSSList,SourceException,Charset,CSSNamespace,Import,
๐Rule,DeclarationBlock,RuleSet,CSSFunction,Value(#1225)
๐ Deprecated
- ๐ Support for PHP < 7.2 is deprecated; version 9.0 will require PHP 7.2 or later
๐ (#1264) - ๐ Passing a
stringornulltoRuleSet::removeRule()is deprecated
(implementing classes areAtRuleSetandDeclarationBlock);
๐ useremoveMatchingRules()orremoveAllRules()instead (#1249) - ๐ Passing a
RuletoRuleSet::getRules()orgetRulesAssoc()is deprecated,
affecting the implementing classesAtRuleSetandDeclarationBlock
๐ (call e.g.getRules($rule->getRule())instead) (#1248) - ๐ Passing a string as the first argument to
getAllValues()is deprecated;
๐ the search pattern should now be passed as the second argument (#1241) - ๐ Passing a Boolean as the second argument to
getAllValues()is deprecated;
the flag for searching in function arguments should now be passed as the third
๐ argument (#1241) - ๐
getLineNo()is deprecated in these classes (usegetLineNumber()instead):
Comment,CSSList,SourceException,Charset,CSSNamespace,Import,
๐Rule,DeclarationBlock,RuleSet,CSSFunction,Value(#1225, #1233) - ๐
Rule::getColNo()is deprecated (usegetColumnNumber()instead)
๐ (#1225, #1233) - Providing zero as the line number argument to
Rule::setPosition()is
๐ deprecated (passnullinstead if there is no line number) (#1225, #1233)
๐ Fixed
- ๐
-
v8.8.0 Changes
March 23, 2025โ Added
- ๐
OutputFormatproperties for space around specific list separators (#880)
๐ Changed
- ๐ Mark the
OutputFormatconstructor as@internal(#1131) - ๐ Mark
OutputFormatteras@internal(#896) - ๐ Mark
Selector::isValid()as@internal(#1037) - ๐ Mark parsing-related methods of most CSS elements as
@internal(#908) - ๐ Mark
OutputFormat::nextLevel()as@internal(#901) - ๐ Make all non-private properties
@internal(#886)
๐ Deprecated
- ๐ Deprecate extending
OutputFormat(#1131) - ๐ Deprecate
OutputFormat::get()and::set()(#1107) - ๐ Deprecate support for
-webkit-calcand-moz-calc(#1086) - ๐ Deprecate magic method forwarding from
OutputFormattoOutputFormatter
๐ (#894) - ๐ Deprecate
__toString()(#1006) - ๐ Deprecate greedy calculation of selector specificity (#1018)
- ๐ Deprecate the IE hack in
Rule(#993, #1003) - ๐
OutputFormatproperties for space around list separators as an array (#880) - ๐ Deprecate
OutputFormat::level()(#870)
๐ Fixed
- ๐
-
v8.7.0 Changes
October 27, 2024 -
v8.6.0 Changes
July 01, 2024โ Added
- ๐ Support arithmetic operators in CSS function arguments (#607)
- โ Add support for inserting an item in a CSS list (#545)
- โ Add support for the
dvh,lvhandsvhlength units (#415)
๐ Changed
- ๐ Improve performance of Value::parseValue with many delimiters by refactoring to remove array_search() (#413)
-
v8.5.2 Changes
June 28, 2024