{"action":"published","release":{"url":"https://api.github.com/repos/css/csso/releases/1972548","assets_url":"https://api.github.com/repos/css/csso/releases/1972548/assets","upload_url":"https://uploads.github.com/repos/css/csso/releases/1972548/assets{?name,label}","html_url":"https://github.com/css/csso/releases/tag/v1.4.0","id":1972548,"tag_name":"v1.4.0","target_commitish":"master","name":"1.4","draft":false,"author":{"login":"lahmatiy","id":270491,"avatar_url":"https://avatars.githubusercontent.com/u/270491?v=3","gravatar_id":"","url":"https://api.github.com/users/lahmatiy","html_url":"https://github.com/lahmatiy","followers_url":"https://api.github.com/users/lahmatiy/followers","following_url":"https://api.github.com/users/lahmatiy/following{/other_user}","gists_url":"https://api.github.com/users/lahmatiy/gists{/gist_id}","starred_url":"https://api.github.com/users/lahmatiy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lahmatiy/subscriptions","organizations_url":"https://api.github.com/users/lahmatiy/orgs","repos_url":"https://api.github.com/users/lahmatiy/repos","events_url":"https://api.github.com/users/lahmatiy/events{/privacy}","received_events_url":"https://api.github.com/users/lahmatiy/received_events","type":"User","site_admin":false},"prerelease":false,"created_at":"2015-10-16T14:41:41Z","published_at":"2015-10-16T14:52:53Z","assets":[],"tarball_url":"https://api.github.com/repos/css/csso/tarball/v1.4.0","zipball_url":"https://api.github.com/repos/css/csso/zipball/v1.4.0","body":"Bringing project back to life. Changed files structure, cleaned up and refactored most of sources. Closing 60+ issues.\r\n\r\n### Common\r\n\r\n- single code base (no more `src` folder)\r\n- build browser version with `browserify` (no more `make`, and `web` folder), browser version is available at `dist/csso-browser.js`\r\n- main file is `lib/index.js` now\r\n- minimal `node.js` version is `0.12` now\r\n- restrict file list to publish on `npm` (no more useless folders and files in package)\r\n- add `jscs` to control code style\r\n- automate `gh-pages` update\r\n- util functions reworked\r\n- translator reworked\r\n- test suite reworked\r\n- compressor refactored\r\n- initial parser refactoring\r\n\r\n### API\r\n\r\n- new method `minify(src, options)`, options:\r\n  - `restructuring` – if set to `false`, disable structure optimisations (`true` by default)\r\n  - `debug` - outputs intermediate state of CSS during compression (`false` by default)\r\n- deprecate `justDoIt()` method (use `minify` instead)\r\n- rename `treeToString()` method to `stringify()`\r\n- drop `printTree()` method\r\n- AST node info\r\n  - `column` and `offset` added\r\n  - `ln` renamed to `line`\r\n  - fix line counting across multiple files and input with CR LF (#147)\r\n\r\n### CLI\r\n\r\n- completely reworked, use [clap](https://github.com/lahmatiy/clap) to parse argv\r\n- add support for input from stdin (#128)\r\n- drop undocumented and obsoleted options `--rule` and `--parser` (suppose nobody use it)\r\n- drop `-off` alias for `--restructure-off` as incorrect (only one letter options should starts with single `-`)\r\n- new option `--debug` that reflecting to `options.debug` for `minify`\r\n\r\n### Parsing and optimizations\r\n\r\n- keep all exclamation comments (#194)\r\n- add `/deep/` combinator support (#209)\r\n- attribute selector\r\n  - allow colon in attribute name (#237)\r\n  - support for namespaces (#233)\r\n- color\r\n  - support all css/html colors\r\n  - convert `hsla` to `rgba` and `hls` to `rgb`\r\n  - convert `rgba` with 1 as alpha value to `rgb` (#122)\r\n  - interpolate `rgb` and `rgba` percentage values to absolute values\r\n  - replace percentage values in `rgba` for normalized/interpolated values\r\n  - lowercase hex colors and color names (#169)\r\n  - fix color minification when hex value replaced for color name (#176)\r\n  - fit rgb values to 0..255 range (#181)\r\n- calc\r\n  - remove spaces for multiple operator in calc\r\n  - don't remove units inside calc (#222)\r\n  - fix wrong white space removal around `+` and `-` (#228)\r\n- don't remove units in `flex` property as it could change value meaning (#200)\r\n- don't merge `\\9` hack values (#231)\r\n- merge property values only if they have the same functions (#150, #227)\r\n- don't merge property values with some sort of units (#140, #161)\r\n- fix `!important` issue for `top-right-bottom-left` properties (#189)\r\n- fix `top-right-bottom-left` properties merge (#139, #175)\r\n- support for unicode-range (#148)\r\n- don't crash on ruleset with no selector (#135)\r\n- tolerant to class names that starts with digit (#99, #105)\r\n- fix background compressing (#170)\r\n\r\n### Small personal sidenote\r\n\r\nWe have been using `csso` in our building process for years. Not only as CSS compress utility, but also as a parser to get AST, transform it and pass to `csso` for compression.\r\n\r\nAll those years it worked stable enough and various bugs usually were not an issue. I have even rewritten some util functions to use it instead of `csso` functions. But project has no maintainer for years. In spite of the opinion that `csso` is dead, it has its own audience and number of downloads [continues to grow](http://www.npm-stats.com/~packages/csso). It's sad that many issues were left with no attention. Moreover I wanted to improve it to make CSS compression results much better and predictable.\r\n\r\nThat's why I've decided to change the situation. I’m happy that project's owners gave me this opportunity. I became maintainer of `csso` and started bringing it back to life.\r\n\r\nAs a first steps I've changed files structure, cleaned up and refactored most of sources. Now it has single code base, with reworked test suite, `jscs` for code style check, `browserify` to build the bundle, automated `gh-pages` publishing etc. All aim to ensure that nothing prevents us to move forward.\r\n\r\nAfter initial refactoring and a bunch of bug fixes, it's now clear to me that all parts of `csso` need to be reworked. First of all compressor's struсtural optimization algorithms should be replaced for others, that are safer, faster and more efficient. Parser should become compliant to standards, with support for new CSS features and more predictable. When this is done, we can try new structural optimizations, that no one has tried before. That is the main reason why I've decided to work on `csso`.\r\n\r\nStay tuned!\r\n\r\n@lahmatiy"}}