CHANGELOG.md 37 KB

[ > ] 1.2.2 / 16.04.2019

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

[ > ] 1.2.1 / 04.04.2019

Some goodness from pull-requests.

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

[ > ] 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).

[ > ] 1.1.1 / 17.09.2018

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

[ > ] 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).

[ > ] 1.0.5 / 26.02.2018

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

[ > ] 1.0.4 / 30.01.2018

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

    [ > ] 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.

    [ > ] 1.0.1 / 31.10.2017

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

    [ > ] 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.

    [ > ] 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.

    [ > ] 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).

    [ > ] 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).

    [ > ] 0.6.6 / 25.04.2016

    • Corrected CSSO API usage

    [ > ] 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).

    [ > ] 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).

    [ > ] 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.

    [ > ] 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.

    [ > ] 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).

    [ > ] 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.

    [ > ] 0.5.6 / 13.08.2015

    • Fixed paths removing.

    [ > ] 0.5.5 / 05.08.2015

    • Reverted debugging changes.

    [ > ] 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.

    [ > ] 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).

    [ > ] 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)

    [ > ] 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

    [ > ] 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

    [ > ] 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.

    [ > ] 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

    [ > ] 0.4.3 / 02.01.2014

    [ > ] 0.4.2 / 19.12.2013

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

    [ > ] 0.4.1 / 18.11.2013

    • node >=0.8.0

    [ > ] 0.4.0 / 18.11.2013

    • merge almost all pull-requests
    • update dependencies

    [ > ] 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

    [ > ] 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

    [ > ] 0.3.5 / 07.05.2013

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

    [ > ] 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

    [ > ] 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

    [ > ] 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

    [ > ] 0.3.1 / 15.04.2013

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

    [ > ] 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.extendwhet.extend
    • update .gitignore
    • update docs

    [ > ] 0.2.4 / 05.04.2013

    [ > ] 0.2.3 / 22.02.2013

    [ > ] 0.2.2 / 09.02.2013

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

    [ > ] 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

    [ > ] 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

    [ > ] 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

    [ > ] 0.1.8 / 11.12.2012

    [ > ] 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)

    [ > ] 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

    [ > ] 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

    [ > ] 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

    [ > ] 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

    [ > ] 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)

    [ > ] 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)

    [ > ] 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.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

    [ > ] 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

    [ > ] 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

    [ > ] 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

    [ > ] 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

    [ > ] 0.0.5 / 03.10.2012

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

    [ > ] 0.0.4 / 30.09.2012

    [ > ] 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

    [ > ] 0.0.2 / 28.09.2012

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

    [ > ] 0.0.1 / 27.09.2012

    • initial public version