sfcode An Online Competing and Development Environment

[ > ] 1.3.2 / 30.10.2019

- Fixed TypeError: Cannot set property 'multipassCount' of undefined

## [ <a href="https://github.com/svg/svgo/tree/v1.3.1">></a> ] 1.3.1 / 29.10.2019

- Updated CSSO version to 4.0.2 fixing the issue with empty semicolons ";;" in styles (thanks to @strarsis and @lahmatiy).
- `prefixIds` plugin now runs only once with `--multipass` option (by @strarsis).
- `cleanupIDs` plugin is prevented from producing a preserved ID, including one which matches a preserved prefix, when minifying (by @thomsj).

## [ <a href="https://github.com/svg/svgo/tree/v1.3.0">></a> ] 1.3.0 / 14.07.2019

- Custom plugins now can be loaded from external js through `path` plugin param.
- New plugin `convertEllipseToCircle` to convert ellipse with equal radius measures to circle (by @tigt).
- New plugin `sortDefsChildren` for improved compression (by @davidleston).
- SVGO now removes unnecessary spaces after `arcto` path command flags.
- `removeDimensions` plugin now adds `viewBox` if it's missing (by @adipascu).
- Fixed `removeUnusedNS` not counting attributes in `<svg>` tag itself.
- Fixed an issue with incorrect processing multiple images (by @cyberalien).
- Fixed an error with incorrect converting multiple segmented curve to an arc.
- Fixed an error with matrix decomposition in `convertTransform` due to rounding error leading to illegal value.
- Added `force` option for `mergePaths` plugin (by @goyney).
- Added options to `prefixIds` plugin for selectively prefixing IDs and/or classes (by @strarsis).
- Exported config function (by @1000ch).

## [ <a href="https://github.com/svg/svgo/tree/v1.2.2">></a> ] 1.2.2 / 16.04.2019

- Update js-yaml for Code Injection warning (by @kaungst).

## [ <a href="https://github.com/svg/svgo/tree/v1.2.1">></a> ] 1.2.1 / 04.04.2019

Some goodness from pull-requests.

- Bump up js-yaml version to fix DoS vulnerability (by @eugestarr).

## [ <a href="https://github.com/svg/svgo/tree/v1.2.0">></a> ] 1.2.0 / 24.02.2019

Some goodness from pull-requests.

- Fixed extra blank lines when processing many files (by @panczarny).
- Added `--recursive` option to process folders recursevely with option `-f` (by @dartess).
- Added `removeAttributesBySelector` plugin to remove elements matching a css selector (by @bmease).
- Added `removeOffCanvasPaths` plugin to remove elements outside of the viewbox (by @JoshyPHP).
- `removeAttrs` plugin: added `preserveCurrentColor` color (by @roblevintennis) and 3rd optional filter for a value (by @Herman-Freund).
- Added `reusePaths` plugin to replace duplicated elements with link (by @jhowcrof).
- Added support of comma-separated plugins list in `--disable` and `--enable` options (by @jmwebservices).
- Added option to preserve IDs based on prefix in `cleanupIDs` plugin (by @bkotzz).
- Replaced `colors` dependency with `chalk` (by @xPaw).

## [ <a href="https://github.com/svg/svgo/tree/v1.1.1">></a> ] 1.1.1 / 17.09.2018

- Fixed crash in `SVGO.optimize()` when ‘info’ is absent.
- Removed extra space after `cleanupListOfValues` plugin.

## [ <a href="https://github.com/svg/svgo/tree/v1.1.0">></a> ] 1.1.0 / 16.09.2018

- Fixed `collapseGroups` plugin removing property with a child having `inherit` value.
- `version` attribute value is not more being rounded.
- Fixed jsAPI `clone` method with respect to the introduced CSS classes.
- Fixed scaling strokes with `vector-effect="non-scaling-stroke"` (by @alexjlockwood).
- Fixed passing properties from groups in `collapseGroups` plugin if child have a filter (by @stristr).
- Fixed arc path commands parsing without separators after flags, effectively producing a JS error.
- Fixed `viewBox` separators parsing.
- Fixed `removeNonInheritableGroupAttrs` plugin to work as intended.
- Fixed removing path segments without length in presence of `stroke-linecap`.
- Fixed `removeUnknownsAndDefaults` plugin removing attributes from elements with `id`.
- Fixed converting to large arcs from nearly straight lines curves.
- Fixed `collapseGroups` plugin affecting `<switch>` and its subgroups.
- Fixed `convertTransform` plugin converting to `rotate()` with wrong sign in some case.
- Fixed `cleanupListOfValues` plugin not preserving non-numeric values.
- Fixed `!important` being passed to attributes in `convertStyleToAttrs` plugin.
- Added option `keepImportant` to `convertStyleToAttrs` plugin to preserve styles with `!important`.
- `removeHiddenElems` plugin now also removes elements with `visibility="hidden"` attribute (by @mikolaj92).
- Added `forceAbsolutePath` option to `convertPathData` plugin to always use absolute coordinates (by @cool).
- Added `keepRoleAttr` for `removeUnknownsAndDefaults` plugin to preserve `role-` attributes (by @himedlooff).
- Added `xmlns` order option in `sortAttrs` plugin (by @hellatan).
- Added an option to `prefixIds` plugin to pass prefix as false or as a function that returns false (by @vzaidman).
- `prefixIds` plugin now adds prefix to every class (by @vzaidman).
- Updated and improved docs a bit (multiple authors).

## [ <a href="https://github.com/svg/svgo/tree/v1.0.5">></a> ] 1.0.5 / 26.02.2018

- Fixed issue with prefixIDs plugin not replacing url() values correctly (by @harrisjose).

## [ <a href="https://github.com/svg/svgo/tree/v1.0.4">></a> ] 1.0.4 / 30.01.2018

- Fixed bug with removing groups that are direct child of "<switch>".
- Fixed bug with shorthand path points counting (thanks @alexjlockwood for noticing).
- Fixed crash on parsing invalid transform, e.g. without close parenthesis.

## [ <a href="https://github.com/svg/svgo/tree/v1.0.3">></a> ] 1.0.3 / 08.11.2017

- Fixed `removeViewBox` plugin to check for zero start coordinates.
- Removed extra info from STDOUT when it set to output.

## [ <a href="https://github.com/svg/svgo/tree/v1.0.2">></a> ] 1.0.2 / 03.11.2017

- Fixed a couple of errors related to `inlineStyles` plugin.
- Updated some lost details in documentation to reflect v1.0 changes.

## [ <a href="https://github.com/svg/svgo/tree/v1.0.1">></a> ] 1.0.1 / 31.10.2017

- Fixed error “Object.defineProperty called on non-object” in images with `<foreignObject/>`.

## [ <a href="https://github.com/svg/svgo/tree/v1.0.0">></a> ] 1.0.0 / 30.10.2017

- SVGO now requires Node 4 or higher.
- Changed CLI syntax to treat filenames as input, thus allowing `svgo *.svg` syntax.
- `SVGO.optimize()` now returns `Promise`.
- Added `datauri` option to JS API.
- Added support for SVG 2 `href` attribute.
- `cleanupIDs` now don't removes IDs if an image consists only of `defs`.
- New plugin `inlineStyles` for converting styles from `<style>` element to attributes if possible (by @strarsis).
- `cleanupNumericValues` now rounds values in `viewBox` (by @caub).
- New plugin: `removeScriptElement` (disabled by default) to align with `removeStyleElement` (by @pklingem).
- `minifyStyles` now removes styles based on usage with controlling options (by @lahmatiy).
- New option `except` in `cleanupIDs` to keep IDs (by @Velenir).
- New option `force` in `cleanupIDs` to work even if SVG contains `style` or `script` elements (by @Velenir).
- Fixed arcs transforming with different signed `scale` parameters (by @JoshyPHP).
- Fixed `removeUselessStrokeAndFill` to check for `style` or `script` elements per file (by @caub).
- New option `keepAriaAttrs` in `removeUnknownsAndDefaults` (by @davidtheclark).
- Corrected parsing in `cleanupIDs` to account animation syntax (by @caub).
- `#ff0000` now converts to `red` as well as `#f00` (by @davidleston).
- Added “gray” variation to colors list per CSS Color Module Level 4 (by @ydaniv).
- Fixed error on empty files.
- A separator character in `removeAttrs` now can be changed per `elemSeparator` option (by @mikestreety).
- `addAttributesToSVGElement` now can add values to attributes.

## [ <a href="https://github.com/svg/svgo/tree/v0.7.2">></a> ] 0.7.2 / 29.01.2017

- Extended `currentColor` match conditions (string, rx, bool) (by @AlimovSV)
- Fixed removing `<animate>` in `<stop>`.
- Fixed removing same transform in inner element in `removeUnknownsAndDefaults`.
- Fixed collapsing groups with same non-inheritable attribute.
- Corrected removing of leading zero in case of exponential notation.

## [ <a href="https://github.com/svg/svgo/tree/v0.7.1">></a> ] 0.7.1 / 27.09.2016

- Reverted the requirement of Node.js to version 0.10.
- Added `addAttributesToSVGElement` to the default config to allow using it with `--enable` option.
- Added korean translation of “How it works” doc (by @primeiros).

## [ <a href="https://github.com/svg/svgo/tree/v0.7.0">></a> ] 0.7.0 / 25.08.2016

- Required Node.js version has increased to 0.12.
- New plugins: `removeElementsByAttr` (by IDs or classes) by @elidupuis, `addAttributesToSVGElement` by @gjjones, `removeXMLNS` (for SVG inlining) by @ricardobeat.
- Tests now correctly pass in Windows with CRLF line endings. Pretty print now accounts system line endings.
- Fixed bugs with collapsing groups with masks and transforms in `collapseGroups`.
- Fixed bugs with erroneous removing IDs in `cleanupIDs`.
- Improved attributes sorting in `sortAttrs` by @darktrojan.
- `addClassesToSVGElement` no more repeats classes (by @ricardobeat).

## [ <a href="https://github.com/svg/svgo/tree/v0.6.6">></a> ] 0.6.6 / 25.04.2016

- Corrected CSSO API usage

## [ <a href="https://github.com/svg/svgo/tree/v0.6.5">></a> ] 0.6.5 / 25.04.2016

- Extra content inserted by editors are now being removed within `<foreignObject>` as well thus fixing bug “Namespace prefix … is not defined“ after applying SVGO.
- Doctype with entities declaration is now also being removed since svgo correctly parses them starting from the version 0.6.2.
- Corrected `moveGroupAttrsToElems` not to move attributes to `g` content if it's referenced (has an `id`).
- `collapseGroups` now don't collapse a group if it has an animated attribute (SMIL).

## [ <a href="https://github.com/svg/svgo/tree/v0.6.4">></a> ] 0.6.4 / 05.04.2016

- Fixed bug in “convertStyleToAttrs” plugin with converting styling properties to non-existent attributes (which are normally removed later by `removeUnknownsAndDefaults`).
- Added `--indent` option to style pretty-printed SVG. (e.g. `--indent 2`) (by @scurker).
- Added `currentColor` param to `convertColors` plugin for converting values like `fill` and `stroke` to `currentColor` (by @scurker).
- Bumped CSSO to the current version and used its new shiny API (thanks to @lahmatiy).

## [ <a href="https://github.com/svg/svgo/tree/v0.6.3">></a> ] 0.6.3 / 20.03.2016

- Smart rounding (introduced in 0.4.5) now applies only when rounding is needed, thus making subsequent passes more stable.
- Fixed regression in converting curves to arcs.
- `xlink:href` references are now being checked by local name `href`, thus correctly working with another namespace prefix.
- Fixed `id` removing with disabled `plugins/convertStyleToAttrs.js`.

## [ <a href="https://github.com/svg/svgo/tree/v0.6.2">></a> ] 0.6.2 / 08.03.2016

- Better error handling and messaging improvements.
- SVG files with XML entities (e.g. from Adobe Illustrator) are now correctly being parsed.
- Fixed error on converting curves to arcs.
- Corrected rounding in subsequent passes with `--multipass` option.
- Data URI option now handles charset (by @holymonson)
- Transformations are no longer moved to group if there is a mask (`plugins/moveElemsAttrsToGroup.js`).
- Fixed matrix decomposition losing sign in case like `[1, 0, 0, -1, 0, 0]` (`scale(1 -1)`).
- Fixed crash on uppercased color name.
- Paths with `id` and without `stroke-width` aren't being transformed now since `stroke-width` may be applied later.

## [ <a href="https://github.com/svg/svgo/tree/v0.6.1">></a> ] 0.6.1 / 21.11.2015

- Added option `--quiet` to suppress output (by @phihag).
- Removed `lib-cov` folder from the package, which was erroneously included before.
- Fixed errors in “minifyStyles” when there are `<style>` elements with `CDATA` content or without content at all.
- Amended transform functions parsing to prevent errors when there are no separators between numbers (which isn't allowed by syntax, but understood by browsers).

## [ <a href="https://github.com/svg/svgo/tree/v0.6.0">></a> ] 0.6.0 / 08.11.2015

- New optimization: circular curves now being converted to arcs. A notable improvement for circles within paths.
- New plugin “minifyStyles” which minifies `<style>` elments content with CSSO by @strarsis (svgo still doesn't understand its content)
- New plugin “removeStyleElement” (disabled by default) by @betsydupuis.
- Fixed issues with parsing numbers with exponent fraction (could happen with high precision >= 7).
- Fixed rounding error due to incorrect preserving of precision in transformations.
- Fixed shorthand curve distortion due to converted previous curve to not a curve.
- Fixed interoperability issue with `precision` cli-option and `full` config.
- Fixed an error produced by “removeUnknownsAndDefaults” by @thiakil
- Another Inkscape prefix namespace is being removed.
- Fixed an issue in moveElemsAttrsToGroup“” with transforms moved around `clip-path`.

## [ <a href="https://github.com/svg/svgo/tree/v0.5.6">></a> ] 0.5.6 / 13.08.2015

- Fixed paths removing.

## [ <a href="https://github.com/svg/svgo/tree/v0.5.5">></a> ] 0.5.5 / 05.08.2015

- Reverted debugging changes.

## [ <a href="https://github.com/svg/svgo/tree/v0.5.4">></a> ] 0.5.4 / 05.08.2015

- New parameter `useShortTags` by @bradbarrow. Now svgo can produce correct non-selfclosing tags (useful in HTML in old browsers).
- Fixed failing on empty transformation (which could be produced by two opposite).
- Fixed removing paths which have numbers with exponent notation.
- Fixed a bug with arc transformation.
- Some typo fixes.

## [ <a href="https://github.com/svg/svgo/tree/v0.5.3">></a> ] 0.5.3 / 21.06.2015

- Fixed breaking related to rounding functions in “convertTransform”.
- Fixed a bug with ID in animations not being worked on by “cleanupIDs”.
- Fixed a bug with quoted reference in `url()`.
- Now, if there are several same IDs in the document, then the first one is used and others are being removed.
- New command-line option `--show-plugins` displaying list of plugins.
- Two new optional plugins: “removeDimensions” (removes `width` and `height` if there is `viewBox`) and “removeAttrsPlugin” (by @bennyschudel).

## [ <a href="https://github.com/svg/svgo/tree/v0.5.2">></a> ] 0.5.2 / 24.05.2015

- Introduced new `transformPrecision` option for better image quality (defaults to 5) in “convertTransform” and “convertPathData” (for the purpose of applying transformations) plugins.
- Matrix transformations now can be decomposed into a combination of few simple transforms like `translate`, `rotate`, `scale`.
- Arcs (paths `arcto` command) are now correctly being transformed into another arcs without being converting to Bezier curves.
- Fixed an issue with “mergePaths” failing to detect paths intersection in some cases.
- Fixed a bug with “removeUnknownsAndDefaults” removing some paths, which was introduced in v0.5.1.
- Fixed a bug with transformation having `rotate()` with optional parameters.
- Patterns with inherited attributes are no longer being removed.
- Styles are no longer being removed from `<desc>` (by @dennari).
- SVGO no longer breaks during parsing.
- Added `clone()` method to JSAPI (by @jakearchibald)

## [ <a href="https://github.com/svg/svgo/tree/v0.5.1">></a> ] 0.5.1 / 30.03.2015

- added new command-line option to set precision in floating point numbers.
- fixed all known image-disruptive bugs
- Notably mergePaths plugin now checks for possible intersections to avoid side-effects
- new plugin removeUselessDefs to remove elements in `<defs>` and similar non-rendering elements without an `id` and thus cannot be used
- fix for `--multipass` command line option (by @dfilatov)
- improved cleanupEnableBackground and convertColors plugins (by @YetiOr)
- new plugin for image manipulation cleanupListOfValues (by @kiyopikko)
- fixed fail on comments after closing root `</svg>` tag
- updated parsing to account meaningful spaces in `<text>`
- `data-*` attributes are now preserved in removeUnknownsAndDefaults
- prevented plugins from failing in `<foreignObject>`
- cleanupNumericValues plugin now converts other units to pixels (if it's better)
- removeUselessStrokeAndFill plugin is enabled again with correct work in case of inherited attributes
- fixed fail on images with incorrect paths like `<path d="z"/>`
- svgo now understands if an input is a folder (remember, you can set output to folder as well)
- added support for some properties from SVG 2 like `vector-effect="non-scaling-stroke"`
- removed option to remove an `id` on root `<svg>` tag in removeUnknownsAndDefaults since it's already being done in cleanupIDs

## [ <a href="https://github.com/svg/svgo/tree/v0.5.0">></a> ] 0.5.0 / 05.11.2014

- added `--multipass` command line option which repeatedly applies optimizations like collapsing groups (by @dfilatov)
- exposed JSAPI as a factory method (by @mistakster)
- added removeDesc plugin (by @dwabyick), disabled by default
- removeUselessStrokeAndFill plugin is disabled by default since it's unable to check inherited properties
- transformations now apply to paths with arcs in plugins/convertPathData
- a lot of bug fixes mostly related to transformations

## [ <a href="https://github.com/svg/svgo/tree/v0.4.5">></a> ] 0.4.5 / 02.08.2014

- significally improved plugin plugins/convertPathData:
  - Now data is being written relative or absolute whichever is shorter. You can turn it off by setting `utilizeAbsolute` to `false`.
  - Smarter rounding: values like 2.499 now rounds to 2.5. Rounding now takes in account accumulutive error meaning that points will not be misplaced due to rounding more than it neccessary.
  - Fixed couple bugs.
- `--output` option now can be a folder along with `--folder`, thanks to @mako-taco.
- plugins/cleanupIDs now have `prefix` option in case you want to combine multiple svg later (by @DanielMazurkiewicz).
- Quotes now being escaped in attributes (by @ditesh).
- Minor bugfixes.

## [ <a href="https://github.com/svg/svgo/tree/v0.4.4">></a> ] 0.4.4 / 14.01.2014

- new plugin plugins/removeTitle (disabled by default, close #159)
- plugins/convertPathData: skip data concatenation for z instruction in collapseRepeated
- plugins/removeUnknownsAndDefaults: do not remove overriden attributes with default values (fix #161 and #168)
- plugins/removeViewBox: disable by default (fix #139)
- update README with gulp task

## [ <a href="https://github.com/svg/svgo/tree/v0.4.3">></a> ] 0.4.3 / 02.01.2014

- new plugin plugins/convertShapeToPath (close #96)
- update sax version to fix #140
- update deps

## [ <a href="https://github.com/svg/svgo/tree/v0.4.2">></a> ] 0.4.2 / 19.12.2013

- add `lcov.info` to npmignore
- fix `js-yaml` version to suppress deprecation warning in stdout

## [ <a href="https://github.com/svg/svgo/tree/v0.4.1">></a> ] 0.4.1 / 18.11.2013

- node >=0.8.0

## [ <a href="https://github.com/svg/svgo/tree/v0.4.0">></a> ] 0.4.0 / 18.11.2013

- merge almost all pull-requests
- update dependencies

## [ <a href="https://github.com/svg/svgo/tree/v0.3.7">></a> ] 0.3.7 / 24.06.2013

- do not remove `result` attribute from filter primitives (fix #122)
- plugins/cleanupAttrs: replace newline with space when needed (fix #119)
- lib/coa: look for config file in current folder
- lib/coa: always traverse all files in the given folder
- deprecate svgo-grunt in favor of grunt-svgmin
- re-enable node-coveralls

## [ <a href="https://github.com/svg/svgo/tree/v0.3.6">></a> ] 0.3.6 / 06.06.2013

- plugins/removeNonInheritableGroupAttrs: more attrs groups to exclude (fix #116 & #118)
- lib/coa: optimize folder file by file (temp fix #114)
- `.jshintrc`: JSHint 2.0
- temporarily disable node-coveralls

## [ <a href="https://github.com/svg/svgo/tree/v0.3.5">></a> ] 0.3.5 / 07.05.2013

- plugins/transformsWithOnePath: fix curves bounding box calculation
- plugins/transformsWithOnePath: fix possible c+t or q+s bug

## [ <a href="https://github.com/svg/svgo/tree/v0.3.4">></a> ] 0.3.4 / 06.05.2013

- plugins/convertPathData: fix m->M bug in some cases
- plugins/transformsWithOnePath: fix last point calculation for C/S/Q/T
- plugins/mergePaths: add space delimiter between z and m

## [ <a href="https://github.com/svg/svgo/tree/v0.3.3">></a> ] 0.3.3 / 05.05.2013

- plugins/convertPathData: convert very first m to M, fix applyTransforms with translate() (fix #112)
- plugins/transformsWithOnePath: fix real width/height rounding; fix scale transform origin; reorder transforms
- plugins/transformsWithOnePath: ability to set new width or height independently with auto rescaling

## [ <a href="https://github.com/svg/svgo/tree/v0.3.2">></a> ] 0.3.2 / 03.05.2013

- new plugin plugins/sortAttrs
- plugins/transformsWithOnePath: buggy hcrop (fix #111)
- Impossible to set output presision to 0 (no fractional part) (fix #110)
- Istanbul + coveralls.io
- update README with NPM version from badge.fury.io
- update README with dependency status from gemnasium.com
- npmignore unneeded files
- reoptimized project logo

## [ <a href="https://github.com/svg/svgo/tree/v0.3.1">></a> ] 0.3.1 / 15.04.2013

- plugins/transformsWithOnePath: resize SVG and automatically rescale inner Path
- better errors handling

## [ <a href="https://github.com/svg/svgo/tree/v0.3.0">></a> ] 0.3.0 / 12.04.2013

- global refactoring: getting rid of the many dependencies
- new plugin plugins/mergePaths
- new plugin plugins/transformsWithOnePath (renamed and featured `cropAndCenterAlongPath`)
- config: replace default config with `full: true`
- coa: JSON string as value of `--config`
- coa: different types of Data URI strings (close #105)
- plugins/_transforms: allow spaces at the beginning of transform
- Travis CI: Nodejs 0.10 & 0.11
- `node.extend` → `whet.extend`
- update `.gitignore`
- update docs

## [ <a href="https://github.com/svg/svgo/tree/v0.2.4">></a> ] 0.2.4 / 05.04.2013

- new plugin plugins/cropAndCenterAlongPath for the Fontello project

## [ <a href="https://github.com/svg/svgo/tree/v0.2.3">></a> ] 0.2.3 / 22.02.2013

- new plugin plugins/removeNonInheritableGroupAttrs (fix #101)
- new plugin plugins/removeRasterImages (close #98)
- plugins/convertTransform: bug with trailing spaces in transform value string (fix #103)

## [ <a href="https://github.com/svg/svgo/tree/v0.2.2">></a> ] 0.2.2 / 09.02.2013

- plugins/convertTransforms: wrong translate() shorthand (fix #94)
- yaml.js → js-yaml
- update outdated deps

## [ <a href="https://github.com/svg/svgo/tree/v0.2.1">></a> ] 0.2.1 / 18.01.2013

- plugins/moveElemsAttrsToGroup + plugins/moveGroupAttrsToElems: move or just leave transform attr from Group to the inner Path Elems (close #86)
- plugins/removeViewBox: doesn't catch floating-point numbers (fix #88)
- plugins/cleanupEnableBackground: doesn't catch floating-point numbers (fix #89)
- plugins/cleanupNumericValues: wrong floating-point numbers regexp (fix #92)
- SVG file generated by fontcustom.com not properly compressed (fix #90)
- `README.ru.md`: стилизация русского языка, улучшение языковых конструкций, правка ошибок (close #91)
- minor JSHint warning fix

## [ <a href="https://github.com/svg/svgo/tree/v0.2.0">></a> ] 0.2.0 / 23.12.2012

- plugins/convertPathData: apply transforms to Path pata (close #33)
- plugins/convertPathData: `-1.816-9.278.682-13.604` parsing error (fix #85)
- plugins/convertTransform: `translate(10, 0)` eq `translate(10)`, but not `translate(10, 10)` eq `translate(10)` (fix #83)
- run plugins/cleanupIDs before plugins/collapseGroups (fix #84)
- update `.gitignore`

## [ <a href="https://github.com/svg/svgo/tree/v0.1.9">></a> ] 0.1.9 / 17.12.2012

- plugins/cleanupIDs: renamed from removeUnusedIDs; minify used IDs (fix #7)
- lib/svgo/js2svg: restore HTML entities back (fix #80 + #81)
- plugins/removeDoctype: do not remove if custom XML entities presents (fix #77)
- lib/svgo/coa: refactoring, colors and fix #70
- lib/svgo: store elapsed time in result object
- usage examples with SVGZ (close #18)
- more optimized logo
- update `.gitignore`

## [ <a href="https://github.com/svg/svgo/tree/v0.1.8">></a> ] 0.1.8 / 11.12.2012

- new plugin plugins/removeUselessStrokeAndFill (close #75)
- new plugin plugins/removeUnusedIDs (close #76)
- plugins/convertPathData: wrong M interpretation in some cases (fix #73)
- plugins/cleanupAttrs: use `isElem()` API
- `.travis.yml`: check all branches

## [ <a href="https://github.com/svg/svgo/tree/v0.1.7">></a> ] 0.1.7 / 08.12.2012

- plugins/convertPathData: incorrect interpretation of `z + m` (fix #69)
- plugins/convertTransform: do a more accurate floating numbers rounding in `matrixToTransform()` (fix #68)

## [ <a href="https://github.com/svg/svgo/tree/v0.1.6">></a> ] 0.1.6 / 07.12.2012

- plugins/convertPathData: collapse repeated instructions only after curveSmoothShorthands (fix #64)
- lib/svgo/coa: handle 'there is nothing to optimize' case and display a message about it (fix #61)
- plugins/cleanupSVGElem: delete as useless artefact

## [ <a href="https://github.com/svg/svgo/tree/v0.1.5">></a> ] 0.1.5 / 06.12.2012

- E-notated numbers in paths not recognised (fix #63)
- update README with `svgo-grunt` and `svgo-osx-folder-action`
- fix `mocha-as-promised` plug in node 0.6

## [ <a href="https://github.com/svg/svgo/tree/v0.1.4">></a> ] 0.1.4 / 05.12.2012

- plugins/_collections: more defaults
- `README.ru.md`
- `docs/how-it-works/ru.md`
- mocha + mocha-as-promised + chai + chai-as-promised + should + istanbul = <3
- update dependencies semvers in `package.json`
- `v0.1.x` and `v0.2.x` milestones

## [ <a href="https://github.com/svg/svgo/tree/v0.1.3">></a> ] 0.1.3 / 30.11.2012

- new plugin plugins/cleanupNumericValues (close #8)
- plugins/removeDefaultPx functionality now included in plugins/removeUnknownsAndDefaults
- plugins/removeUnknownsAndDefaults: refactoring and picking up the complete elems+attrs collection (close #59)
- plugins/convertTransform: error in matrices multiplication (fix #58)
- plugins/convertTransform: mark translate() and scale() as useless only with one param (fix #57)
- plugins/convertPathData: drastic speed improvement with huge Path data
- plugins/convertPathData: fix the very first Mm with multiple points (fix #56)
- plugins/moveElemsAttrsToGroup: additional check for transform attr
- brand-new project `logo.svg`
- `.travis.yml`: build only master branch
- global ‘'use strict’`*`.jshintignore`
- README and CHANGELOG: minor corrections

## [ <a href="https://github.com/svg/svgo/tree/v0.1.2">></a> ] 0.1.2 / 24.11.2012

- lib/svgo/svg2js: correct 'onerror' failure (fix #51)
- config: disable sax-js position tracking by default (fix #52)
- lib/svgo: rename 'startBytes' to 'inBytes' and 'endBytes' to 'outBytes' (close #53)
- plugins/removeUnknownsAndDefaults: remove SVG id attr (close #54)

## [ <a href="https://github.com/svg/svgo/tree/v0.1.1">></a> ] 0.1.1 / 23.11.2012

- plugins/moveElemsAttrsToGroup: fix inheitable only attrs array (fix #47)
- plugins/removeEmptyContainers: do not remove an empty 'svg' element (fix #48)
- plugins/removeDefaultPx: should also understand a floating-numbers too (fix #49)
- plugins/removeUnknownsAndDefaults: merge multiple groupDefaults attrs (close #50)

## [ <a href="https://github.com/svg/svgo/tree/v0.1.0">></a> ] 0.1.0 / 22.11.2012

- new plugin plugins/removeUnknownsAndDefaults (close #6)
- plugins/convertPathData: convert straight curves into lines segments (close #17); remove an absolute coords conversions
- plugins/convertPathData: convert quadratic Bézier curveto into smooth shorthand (close #31)
- plugins/convertPathData: convert curveto into smooth shorthand (close #30)
- lib/svgo: global API refactoring (close #37)
- lib/svgo: fatal and stupid error in stream chunks concatenation (fix #40)
- lib/coa: batch folder optimization (close #29)
- lib/coa: support arguments as aliases to `--input` and `--output` (close #28)
- project logo by Egor Bolhshakov
- move modules to `./lib/svgo/`
- rename and convert `config.json` to `.svgo.yml`
- add ./docs/
- plugins/convertPathData: don't remove first `M` even if it's `0,0`
- plugins/convertPathData: stronger defense from infinite loop
- plugins/moveElemsAttrsToGroup: should affect only inheritable attributes (fix #46)*
- plugins/removeComments: ignore comments which starts with '!' (close #43)
- config: `cleanupAttrs` should be before `convertStyleToAttrs` (fix #44)*
- lib/svgo/jsAPI: add `eachAttr()` optional context param
- temporarily remove PhantomJS and `--test` (close #38)
- q@0.8.nosp@m..10 compatibility: 'end is deprecated, use done instead' fix
- add Istanbul code coverage
- update dependencies versions and gitignore
- README: add TODO section with versions milestones
- update README with License section
- update LICENSE with russian translation
- `.editorconfig`: 2 spaces for YAML

## [ <a href="https://github.com/svg/svgo/tree/v0.0.9">></a> ] 0.0.9 / 29.10.2012

- plugins how-to (close #27)
- allow any plugin of any type to go in any order (close #14)
- allow to do a multiple optimizations with one init (close #25)
- plugins/convertPathData: global refactoring
- plugins/convertPathData: do all the tricks with absolute coords too (fix #22)
- plugins/convertPathData: accumulation of rounding errors (fix #23)
- plugins/convertPathData: prevent an infinity loop on invalid path data (fix #26)
- plugins/convertPathData: do not remove very first M from the path data (fix #24)
- plugins/convertPathData: optimize path data in <glyph> and <missing-glyph> (close #20)
- plugins/convertTransform: add patternTransform attribute to the process (close #15)
- plugins/convertTransform: Firefox: removing extra space in front of negative number is alowed only in path data, but not in transform (fix #12)
- plugins/removeXMLProcInst: remove only 'xml' but not 'xml-stylesheet' (fix #21)
- plugins/collapseGroups: merge split-level transforms (fix #13)
- jsdoc corrections

## [ <a href="https://github.com/svg/svgo/tree/v0.0.8">></a> ] 0.0.8 / 20.10.2012

- new plugin convertTransform (close #5)
- new plugin removeUnusedNS
- plugins/convertPathData: remove useless segments
- plugins/convertPathData: a lot of refactoring
- plugins/convertPathData: round numbers before conditions because of exponential notation (fix #3)
- plugins/moveElemsAttrsToGroup: merge split-level transforms instead of replacing (fix #10)
- lib/svg2js: catch and output xml parser errors (fix #4)
- lib/coa: open file for writing only when we are ready (fix #2)
- lib/tools: node.extend module
- lib/plugins: refactoring
- lib/js2svg: refactoring
- lib/jsAPI: simplification and refactoring
- absolute urls in README
- update .editorconfig
- update .travis.yml with nodejs 0.9

## [ <a href="https://github.com/svg/svgo/tree/v0.0.7">></a> ] 0.0.7 / 14.10.2012

- new plugin convertPathData
- –input data now can be a Data URI base64 string
- –output data now can be a Data URI base64 string with –datauri flag
- Travis CI
- JSHint corrections + .jshintrc
- .editorconfig
- display time spent on optimization
- .svgo → config.json
- lib/phantom_wrapper.js → lib/phantom.js

## [ <a href="https://github.com/svg/svgo/tree/v0.0.6">></a> ] 0.0.6 / 04.10.2012

- add –test option to make a visual comparison of two files (PhantomJS pre-required)
- update README and CHANGELOG with the correct relative urls

## [ <a href="https://github.com/svg/svgo/tree/v0.0.5">></a> ] 0.0.5 / 03.10.2012

- every plugin now has [at least one test](plugins)
- removeViewBox, cleanupEnableBackground, removeEditorsNSData, convertStyleToAttrs and collapseGroups plugins fixes
- new –pretty option for the pretty printed SVG
- lib/config refactoring

## [ <a href="https://github.com/svg/svgo/tree/v0.0.4">></a> ] 0.0.4 / 30.09.2012

- new plugin removeViewBox
- new plugin cleanupEnableBackground
- display useful info after successful optimization
- 'npm test' with 'spec' mocha output by default

## [ <a href="https://github.com/svg/svgo/tree/v0.0.3">></a> ] 0.0.3 / 29.09.2012

- plugins/collapseGroups bugfix
- plugins/moveElemsAttrsToGroup bugfix
- svgo now display –help if running w/o arguments
- massive jsdoc updates
- plugins engine main filter function optimization

## [ <a href="https://github.com/svg/svgo/tree/v0.0.2">></a> ] 0.0.2 / 28.09.2012

- add –disable and –enable command line options
- add an empty values rejecting to coa.js
- update README

## [ <a href="https://github.com/svg/svgo/tree/v0.0.1">></a> ] 0.0.1 / 27.09.2012

- initial public version