diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..05c816c2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,73 @@ +# Change Log +All notable changes to Paper.js shall be documented in this file, following common [CHANGELOG](http://keepachangelog.com/) conventions. As of `0.10.0`, Paper.js adheres to [Semantic Versioning](http://semver.org/). + +## `0.10.0` (Unreleased) + +### Changed +- Significant overhaul and improvement of boolean path operations (`#unite()`, + `#subtract()`, `#intersect()`, `#exclude()`, `#divide()`): + - Improve handling of self-intersecting paths and non-zero fill-rules. + - Handle operations on identical paths. + - Improve handling of near-collinear lines. + - Better handle self-intersecting paths that merely "touch" themselves. + - Handle situations where all encountered intersections are part of overlaps. +- Significant improvement of reliability of bezier fat-line clipping code in + `#getIntersections()` and `#getCrossings()`. +- Complete refactoring of key-event handling to increase reliably when handling + special keys. +- Complete refactoring of mouse-event handling on item and view, to better + handle event bubbling and `Item#removeOn()` calls. +- Rename `#windingRule` to `#fillRule` on `Item` and `Style`. +- Do not replace existing named child reference on `Item#children` with new one + when the name is identical. +- Update internal Acorn JavaScript parser to `0.5.0`, the last small version. +- Update QUnit to `1.20.0`. + +### Added +- Multiple additions to SVG export (`#exportSVG()`): + - Support `{ precision: value }` option. + - Support `#fillRule` through the SVG `fill-rule` attribute. + - Support `#blendMode` through the CSS `mix-blend-mode` attribute. +- Various additions to `#getItems()` on `Project` and `Item`: + - Add support for `{ recursive: false }` as a way to prevent iterating over + all children of children. + - Add support for `{ match: function() {} }`, so the match function can be + passed in combination with other options. +- Add `Item#copyAttributes()` and `Item#copyContent()`, and use them in + `Item#clone()`. +- Add `insert` parameter to `Path#toShape()`, `Shape#toPath()`, + `Item#rasterize()`, controlling whether the created item is inserted into the + scene graph or not. +- Add visual item comparison to QUnit, through rasterization and Resemble.js + diffing. +- Add many unit tests for known edge cases in boolean operations and curve + intersections. +- Start using automatic code testing through Travis CI. +- Reach JSHint compliance and include regular linting in Travis CI tests. +- Define code format standards in .editorconfig file + +### Deprecated +- Deprecate `#windingRule` on `Item` and `Style` in favor of `#fillRule`. + + + +### Fixed +- Improve hit-testing and `#contains()` checks on path with horizontal lines (#819). +- Handle non-reversible matrices in `Item#hitTest()` (#617). +- Fix various issues with adding and removing of segments in paths (#815). +- Support bubbling up of `doubleclick` events on `Group` (#834). +- Fix wrong `#key` values in key-events that do not match character (#881). +- Fix handling of control and meta key sequences and special character handling + (#860). +- Handle incorrect mouse event on `ctrl-alt-del` key sequence on Chrome/Windows + (#800). +- Do not rasterize items if the resulting raster will be empty (#828). +- Fix SVG serialization in JSDOM `7.0.0` and newer (#821). +- Correctly handle gradients in SVG import on Firefox (#666). +- Fix `Shape#strokeBounds` when `#strokeScaling` is false (#856). +- Consistently interpret curves as straight or not-straight (#838). +- Switch blendMode to 'lighter' in CandyCrash (#453). + +… and many more.