3fca892a7ecf8379642e84383c7acba8cf3eea330b99406be21d22490bdd9369920bc2d09f1049e148b7980c9bea9b57192f18ec0b350cbf05daa2c9e69b38 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. ## 2.3.2 (March 11, 2016)
  2. - Fix infinite loop on value parse (#328)
  3. ## 2.3.1 (January 6, 2016)
  4. - Added `\0` IE hack support (#320)
  5. ## 2.3.0 (October 25, 2016)
  6. - Added `beforeCompress` and `afterCompress` options support (#316)
  7. - Fixed crash on empty argument in function (#317)
  8. ## 2.2.1 (July 25, 2016)
  9. - Fixed shorthand optimisation issue when value has a color value or something unknown (#311)
  10. - Fixed `cursor` broken fallback (#306)
  11. ## 2.2.0 (June 23, 2016)
  12. - Implement AST cloning by adding `clone()` [function](https://github.com/css/csso#cloneast) and `clone` [option](https://github.com/css/csso#compressast-options) for `compress()` function (#296)
  13. - Fix parse and translate attribute selector with flags but w/o operator (i.e. `[attrName i]`)
  14. - Don't merge rules with flagged attribute selectors with others (#291)
  15. - Take in account functions when merge TRBL-properties (#297, thanks to @ArturAralin)
  16. - Improve partial merge (#304)
  17. - Tweak scanner, reduce code deoptimizations and other small improvements
  18. ## 2.1.1 (May 11, 2016)
  19. - Fix wrong declaration with `\9` hack merge (#295)
  20. ## 2.1.0 (May 8, 2016)
  21. - New option `comments` to specify what comments to left: `exclamation`, `first-exclamation` and `none`
  22. - Add `offset` to CSS parse error details
  23. - Fix token `offset` computation
  24. ## 2.0.0 (April 5, 2016)
  25. - No more `gonzales` AST format and related code
  26. - `minify()` and `minifyBlock()` is always return an object as result now (i.e. `{ css: String, map: SourceMapGenerator or null }`)
  27. - `parse()`
  28. - Returns AST in new format (so called `internal`)
  29. - Dynamic scanner implemented
  30. - New AST format + dynamic scanner = performance boost and less memory consumption
  31. - No more `context` argument, context should be specified via `options`
  32. - Supported contexts now: `stylesheet`, `atrule`, `atruleExpression`, `ruleset`, `selector`, `simpleSelector`, `block`, `declaration` and `value`
  33. - Drop `needPositions` option, `positions` option should be used instead
  34. - Drop `needInfo` option, `info` object is attaching to nodes when some information is requested by `options`
  35. - `options` should be an object, otherwise it treats as empty object
  36. - `compress()`
  37. - No more AST converting (performance boost and less memory consumption)
  38. - Drop `outputAst` option
  39. - Returns an object as result instead of AST (i.e. `{ ast: Object }`)
  40. - Drop methods: `justDoIt()`, `stringify()`, `cleanInfo()`
  41. ## 1.8.1 (March 30, 2016)
  42. - Don't remove spaces after function/braces/urls since unsafe (#289)
  43. ## 1.8.0 (March 24, 2016)
  44. - Usage data support:
  45. - Filter rulesets by tag names, class names and ids white lists.
  46. - More aggressive ruleset moving using class name scopes information.
  47. - New CLI option `--usage` to pass usage data file.
  48. - Improve initial ruleset merge
  49. - Change order of ruleset processing, now it's left to right. Previously unmerged rulesets may prevent lookup and other rulesets merge.
  50. - Difference in pseudo signature just prevents ruleset merging, but don't stop lookup.
  51. - Simplify block comparison (performance).
  52. - New method `csso.minifyBlock()` for css block compression (e.g. `style` attribute content).
  53. - Ruleset merge improvement: at-rules with block (like `@media` or `@supports`) now can be skipped during ruleset merge lookup if doesn't contain something prevents it.
  54. - FIX: Add negation (`:not()`) to pseudo signature to avoid unsafe merge (old browsers doesn't support it).
  55. - FIX: Check nested parts of value when compute compatibility. It fixes unsafe property merging.
  56. ## 1.7.1 (March 16, 2016)
  57. - pass block mode to tokenizer for correct parsing of declarations properties with `//` hack
  58. - fix wrongly `@import` and `@charset` removal on double exclamation comment
  59. ## 1.7.0 (March 10, 2016)
  60. - support for [CSS Custom Properties](https://www.w3.org/TR/css-variables/) (#279)
  61. - rework RTBL properties merge – better merge for values with special units and don't merge values with CSS-wide keywords (#255)
  62. - remove redundant universal selectors (#178)
  63. - take in account `!important` when check for property overriding (#280)
  64. - don't merge `text-align` declarations with some values (#281)
  65. - add spaces around `/deep/` combinator on translate, since it together with universal selector can produce a comment
  66. - better keyword and property name resolving (tolerant to hacks and so on)
  67. - integration improvements
  68. - compression log function could be customized by `logger` option for `compress()` and `minify()`
  69. - make possible to set initial line and column for parser
  70. ## 1.6.4 (March 1, 2016)
  71. - `npm` publish issue (#276)
  72. ## 1.6.3 (February 29, 2016)
  73. - add `file` to generated source map since other tools can relay on it in source map transform chain
  74. ## 1.6.2 (February 29, 2016)
  75. - tweak some parse error messages and their positions
  76. - fix `:not()` parsing and selector groups in `:not()` is supported now (#215)
  77. - `needPosition` parser option is deprecated, `positions` option should be used instead (`needPosition` is used still if `positions` option omitted)
  78. - expose internal AST API as `csso.internal.*`
  79. - `minify()` adds `sourcesContent` by default when source map is generated
  80. - bring back support for node.js `0.10` until major release (#275)
  81. ## 1.6.1 (February 28, 2016)
  82. - fix exception on zero length dimension compress outside declaration (#273)
  83. ## 1.6.0 (February 27, 2016)
  84. - **source maps support**
  85. - parser remake:
  86. - various parsing issues fixed
  87. - fix unicode sequence processing in ident (#191)
  88. - support for flags in attribute selector (#270)
  89. - position (line and column) of parse error (#109)
  90. - 4x performance boost, less memory consumption
  91. - compressor refactoring
  92. - internal AST is using doubly linked lists (with safe transformation support during iteration) instead of arrays
  93. - rename `restructuring` to `restructure` option for `minify()`/`compress()` (`restructuring` is alias for `restructure` now, with lower priority)
  94. - unquote urls when possible (#141, #60)
  95. - setup code coverage and a number of related fixes
  96. - add eslint to check unused things
  97. ## 1.5.4 (January 27, 2016)
  98. - one more fix (in `restructRuleset` this time) with merge of rulesets when a ruleset with same specificity places between them (#264)
  99. - disable partial merge of rulesets in `@keyframes` rulesets (until sure it's correct)
  100. ## 1.5.3 (January 25, 2016)
  101. - don't override display values with different browser support (#259)
  102. - fix publish issue (one of modules leak in development state)
  103. ## 1.5.2 (January 24, 2016)
  104. - don't merge rulesets if between them a ruleset with same specificity (#264)
  105. ## 1.5.1 (January 14, 2016)
  106. - ensure `-` is not used as an identifier in attribute selectors (thanks to @mathiasbynens)
  107. - fix broken `justDoIt()` function
  108. - various small fixes
  109. ## 1.5.0 (January 14, 2016)
  110. ### Parser
  111. - attach minus to number
  112. ### Compressor
  113. - split code base into small modules and related refactoring
  114. - introduce internal AST format for compressor (`gonzales`→`internal` and `internal`→`gonzales` convertors, walkers, translator)
  115. - various optimizations: no snapshots, using caches and indexes
  116. - sort selectors, merge selectors in alphabet order
  117. - compute selector's specificity
  118. - better ruleset restructuring, improve compression of partially equal blocks
  119. - better ruleset merge – not only closest but also disjoined by other rulesets when safe
  120. - join `@media` with same query
  121. - `outputAst` – new option to specify output AST format (`gonzales` by default for backward compatibility)
  122. - remove quotes surrounding attribute values in attribute selectors when possible (#73)
  123. - replace `from`→`0%` and `100%`→`to` at `@keyframes` (#205)
  124. - prevent partial merge of rulesets at `@keyframes` (#80, #197)
  125. ### API
  126. - walker for `gonzales` AST was implemented
  127. ### CLI
  128. - new option `--stat` (output stat in `stderr`)
  129. - new optional parameter `level` for `--debug` option
  130. ## 1.4.4 (December 10, 2015)
  131. - prevent removal of spaces after braces that before identifier that breaking at-rules expressions (#258)
  132. ## 1.4.3 (December 4, 2015)
  133. - fix unicode-range parsing that cause to wrong function detection (#250)
  134. ## 1.4.2 (November 9, 2015)
  135. - allow spaces between `progid:` and rest part of value for IE's `filter` property as `autoprefixer` generates this kind of code (#249)
  136. - fixes for Windows:
  137. - correct processing new lines
  138. - normalize file content in test suite
  139. - fixes to work in strict mode (#252)
  140. - init compressor dictionaries for every css block (#248, #251)
  141. - bump uglify-js version
  142. ## 1.4.1 (October 20, 2015)
  143. - allow merge for `display` property (#167, #244)
  144. - more accurate `rect` (`clip` property value) merge
  145. - fix typo when specifying options in cli (thanks to @Taritsyn)
  146. - fix safe unit values merge with keyword values (#244)
  147. - fix wrong descendant combinator removal (#246)
  148. - build browser version on `prepublish` (thanks to @silentroach)
  149. - parser: store whitespaces as single token (performance and reduce memory consumption)
  150. - rearrange compress tests layout
  151. ## 1.4 (October 16, 2015)
  152. Bringing project back to life. Changed files structure, cleaned up and refactored most of sources.
  153. ### Common
  154. - single code base (no more `src` folder)
  155. - build browser version with `browserify` (no more `make`, and `web` folder), browser version is available at `dist/csso-browser.js`
  156. - main file is `lib/index.js` now
  157. - minimal `node.js` version is `0.12` now
  158. - restrict file list to publish on npm (no more useless folders and files in package)
  159. - add `jscs` to control code style
  160. - automate `gh-pages` update
  161. - util functions reworked
  162. - translator reworked
  163. - test suite reworked
  164. - compressor refactored
  165. - initial parser refactoring
  166. ### API
  167. - new method `minify(src, options)`, options:
  168. - `restructuring` – if set to `false`, disable structure optimisations (`true` by default)
  169. - `debug` - outputs intermediate state of CSS during compression (`false` by default)
  170. - deprecate `justDoIt()` method (use `minify` instead)
  171. - rename `treeToString()` method to `stringify()`
  172. - drop `printTree()` method
  173. - AST node info
  174. - `column` and `offset` added
  175. - `ln` renamed to `line`
  176. - fix line counting across multiple files and input with CR LF (#147)
  177. ### CLI
  178. - completely reworked, use [clap](https://github.com/lahmatiy/clap) to parse argv
  179. - add support for input from stdin (#128)
  180. - drop undocumented and obsoleted options `--rule` and `--parser` (suppose nobody use it)
  181. - drop `-off` alias for `--restructure-off` as incorrect (only one letter options should starts with single `-`)
  182. - new option `--debug` that reflecting to `options.debug` for `minify`
  183. ### Parsing and optimizations
  184. - keep all exclamation comments (#194)
  185. - add `/deep/` combinator support (#209)
  186. - attribute selector
  187. - allow colon in attribute name (#237)
  188. - support for namespaces (#233)
  189. - color
  190. - support all css/html colors
  191. - convert `hsla` to `rgba` and `hls` to `rgb`
  192. - convert `rgba` with 1 as alpha value to `rgb` (#122)
  193. - interpolate `rgb` and `rgba` percentage values to absolute values
  194. - replace percentage values in `rgba` for normalized/interpolated values
  195. - lowercase hex colors and color names (#169)
  196. - fix color minification when hex value replaced for color name (#176)
  197. - fit rgb values to 0..255 range (#181)
  198. - calc
  199. - remove spaces for multiple operator in calc
  200. - don't remove units inside calc (#222)
  201. - fix wrong white space removal around `+` and `-` (#228)
  202. - don't remove units in `flex` property as it could change value meaning (#200)
  203. - don't merge `\9` hack values (#231)
  204. - merge property values only if they have the same functions (#150, #227)
  205. - don't merge property values with some sort of units (#140, #161)
  206. - fix `!important` issue for `top-right-bottom-left` properties (#189)
  207. - fix `top-right-bottom-left` properties merge (#139, #175)
  208. - support for unicode-range (#148)
  209. - don't crash on ruleset with no selector (#135)
  210. - tolerant to class names that starts with digit (#99, #105)
  211. - fix background compressing (#170)
  212. ## 1.3.12 (October 8, 2015)
  213. - Case insensitive check for `!important` (#187)
  214. - Fix problems with using `csso` as cli command on Windows (#83, #136, #142 and others)
  215. - Remove byte order marker (the UTF-8 BOM) from input
  216. - Don't strip space between funktion-funktion and funktion-vhash (#134)
  217. - Don't merge TRBL values having \9 (hack for IE8 in bootstrap) (#159, #214, #230, #231 and others)
  218. - Don't strip units off dimensions of non-length (#226, #229 and others)
  219. ## 1.3.7 (February 11, 2013)
  220. - Gonzales 1.0.7.
  221. ## 1.3.6 (November 26, 2012)
  222. - Gonzales 1.0.6.
  223. ## 1.3.5 (October 28, 2012)
  224. - Gonzales 1.0.5.
  225. - Protecting copyright notices in CSS: https://github.com/css/csso/issues/92
  226. - Zero CSS throws an error: https://github.com/css/csso/issues/96
  227. - Don't minify the second `0s` in Firefox for animations: https://github.com/css/csso/issues/100
  228. - Japan manual
  229. - BEM ready documentation
  230. ## 1.3.4 (October 10, 2012)
  231. - @page inside @media Causes Error: https://github.com/css/csso/issues/90
  232. ## 1.3.3 (October 9, 2012)
  233. - CSSO 1.3.2 compresses ".t-1" and ".t-01" as identical classes: https://github.com/css/csso/issues/88
  234. ## 1.3.2 (October 8, 2012)
  235. - filter + important breaks CSSO v1.3.1: https://github.com/css/csso/issues/87
  236. ## 1.3.1 (October 8, 2012)
  237. - "filter" IE property breaks CSSO v1.3.0: https://github.com/css/csso/issues/86
  238. ## 1.3.0 (October 4, 2012)
  239. - PeCode CSS parser replaced by Gonzales CSS parser