# Changelog
All notable changes to this project will be documented in this file. The format is inspired by Keep a Changelog (opens new window), and this project adheres to Semantic Versioning (opens new window).
# September 8, 2025 v0.8.20
Sep 8, 2025
v0.8.20 (opens new window)- Fixed Two.Element.copyto fail gracefully
- Added Two.Imageas a new shape that inheritsTwo.Rectangle
- Expand Two.RoundedRectangleconstructor to acceptTwo.Vectoras the radius
- Added Two.Element.dispose,Two.Path.dispose,Two.Group.dispose,Two.Text.dispose,Two.Points.dispose,Two.ImageSequence.dispose,Two.Sprite.dispose
- Improved Two.releaseto account for renderer specific deallocations
- Improved Two.ImageSequenceto take all optional arguments on instantiation
- Fixed command setting on Two.Line.leftandTwo.Line.right
# June 27, 2025 v0.8.19
Jun 27, 2025
v0.8.19 (opens new window)- Improved TypeScript types for Two.Path.dashes,Two.Points.dashes,Two.Text.dashes
- Improved TypeScript types for the Two.Element.rendererproperty
- Added Two.Element.renderer.onBeforeRenderandTwo.Element.renderer.onAfterRenderfor higher context manipulation
# April 8, 2025 v0.8.18
Apr 8, 2025
v0.8.18 (opens new window)- Improve TypeScript types with correct inheritance and no errors
- Fix Two.releasein order to check for object existence onfillandstrokeproperties
# Mar 17, 2025 v0.8.17
Mar 17, 2025
v0.8.17 (opens new window)- Improved and updated TypeScript types based on public / private properties and new latest Two.js features
- Added Two.Gradient.disposeandTwo.Texture.disposeto properly remove effects from scenegraphs
- Changed name Two.nextFrameIDtoTwo.NextFrameId
- Improved Two.releasemethod to include detaching an object's effects (e.g:Two.Texture,Two.Gradient)
- Fixed order of operations on Two.Shapetransformations
# Feb 13, 2025 v0.8.16
Feb 13, 2025
v0.8.16 (opens new window)- Improved TypeScript types (albeit raising errors because of how expressive Two.js / JavaScript is)
- Move Two.Utils.shimtoTwo.Utils.polyfill. Shim exists but is internal specific to remove circular dependencies
- Add Two.CanvasRenderercompatiblity with skia-canvas (opens new window)
- Two.Path.subdivideaccurately amends the final vertices in the updated list
- Two.ZUI.resetupdates the surfaces to be reflect reset orientation
- Two.Group.getBoundingClientRect(shallow)correctly infers min and max values to calculate dimensions correctly
# Dec 31, 2024 v0.8.15
Dec 31, 2024
v0.8.15 (opens new window)- Made CanvasPolyfillobject and merged it intoTwo.Utilsto remove circular dependencies
- Made Two.Collection._eventsandTwo.Children.idsnot enumerated for more seamless invocation ofArraymethods likeArray.filterandObjectmethods likeObject.keys
- Added static method fromObjectto allTwo.Elementand descendant classes
- Added method copyto allTwo.Elementand descendant classes
- Added tests for toObjectmethods
- Improved TypeScript types for argument relation
- Two.WebGLRenderercorrectly handles negative scale values
- Two.Path.noStroke,- Two.Text.noStroke, and derivative methods now include setting both the stroke color to- "none"and the line width to 0
- Fixed Two.Arcflag behavior forTwo.Arc.widthandTwo.Arc.heightproperties
# Jun 10, 2024 v0.8.14
Jun 10, 2024
v0.8.14 (opens new window)- Made objectBoundingBoxapplication consistent accross renderers
- Patched texture scaling in Two.SVGRenderer
- Updated Typescript definitions @kevin-nano (opens new window)
# Feb 22, 2024 v0.8.13
Feb 22, 2024
v0.8.13 (opens new window)- Added Two.Text.directionfor rendering text either left to right or right to left
- Improved Two.WebGLRenderertexture crispness / aliasing
- Improved consistency of Two.Text.baselinerendering across all renderers
# Oct 16, 2023 v0.8.12
Oct 16, 2023
v0.8.12 (opens new window)- Added "no-referrer"policy to image requests
- Updated extras to be compatible with Two.MatrixAPI changes
- Two.Path.noFill()yields- "none"instead of- "transparent"
- Two.Path.noStroke()yields- "none"instead of- "transparent"
- Two.Text.noFill()yields- "none"instead of- "transparent"
- Two.Text.noStroke()yields- "none"instead of- "transparent"
- Two.Points.noFill()yields- "none"instead of- "transparent"
- Two.Points.noStroke()yields- "none"instead of- "transparent"
# Aug 7, 2023 v0.8.11
Aug 7, 2023
v0.8.11 (opens new window)- Fixed getters on Two.Anchor.leftandTwo.Anchor.right@eatgrass (opens new window)
- Improved Two.Path.getBoundingClientRect,Two.Group.getBoundingClientRect, andTwo.Text.getBoundingClientRectto correctly handle projected points that are rotated by matrices
- Improved types.d.tsforTwo.Group
- Two.Textrendered to SVG directly instead of- <defs />
- Two.SVGRendererdisposes of unused effects from- <defs />
- Override Two.Collection.mapmethod to be more explicit
- Improved types.d.tsfor renderers and baseTwoclass
# Jun 9, 2022 v0.8.10
Jun 9, 2022
v0.8.10 (opens new window)- Added Two.Arcto/extrasdirectory
- Made /extras/js/zui.jsES6 compliant
- Removed /extrasmodules from generated documentation
- Added method documentation to Two.ZUI
- Improved types.d.ts
- Fixed Commonjs imports from package.json
# May 9, 2022 v0.8.7
May 9, 2022
v0.8.7 (opens new window)- Fixed documentation links
- Made Two.GroupandTwo.Textproperties public in TypeScript types
- Added overloaded methods to TypeScript types
- Fixed Two.Path.endingdiscrepancies whenTwo.Path.curved = true
# Mar 29, 2022 v0.8.5
Mar 29, 2022
v0.8.5 (opens new window)- Added Two.Gradientparent parameter toTwo.Stop.clone
- Breaking: Added export maps so extras are imported like so import { ZUI } from 'two.js/extras/zui.js'
# Jan 29, 2022 v0.8.3
Jan 29, 2022
v0.8.3 (opens new window)- Improved Two.Element.classNameflagging andclassListconstruction
- Manually amended types.d.tsfor better TypeScript developing
# Jan 19, 2022 v0.8.2
Jan 21, 2022
v0.8.2 (opens new window)- Removed #private declared variables for better EcmaScript compatibility
- Fixed Two.Path.beginingandTwo.Path.endinginterpolation whenTwo.Anchor.relative = false
- Added Two.Utils.read.path(string)which allows for string interpretation of an SVG path'sdattribute
- Added Two.Shape.worldMatrix
# Jan 10, 2022 v0.8.0
Jan 10, 2022
v0.8.0 (opens new window)- Added Two.Elementas an EcmaScript 6 class
- Converted Two.ImageSequenceto EcmaScript 6 class
- Converted Two.Spriteto EcmaScript 6 class
- Converted Two.Textureto EcmaScript 6 class
- Converted Two.Stopto EcmaScript 6 class
- Converted Two.RadialGradientto EcmaScript 6 class
- Converted Two.LinearGradientto EcmaScript 6 class
- Converted Two.Gradientto EcmaScript 6 class
- Converted Two.Starto EcmaScript 6 class
- Converted Two.RoundedRectangleto EcmaScript 6 class
- Converted Two.Rectangleto EcmaScript 6 class
- Converted Two.Polygonto EcmaScript 6 class
- Converted Two.Pointsto EcmaScript 6 class
- Converted Two.Lineto EcmaScript 6 class
- Converted Two.Ellipseto EcmaScript 6 class
- Converted Two.Circleto EcmaScript 6 class
- Converted Two.ArcSegmentto EcmaScript 6 class
- Converted Two.Pathto EcmaScript 6 class
- Converted Two.Groupto EcmaScript 6 class
- Converted Two.Textto EcmaScript 6 class
- Converted Two.Shapeto EcmaScript 6 class
- Converted Two.Matrixto EcmaScript 6 class
- Converted Two.Registryto EcmaScript 6 class
- Converted Two.Childrento EcmaScript 6 class
- Converted Two.Collectionto EcmaScript 6 class
- Converted Two.Eventsto EcmaScript 6 class
- Converted Two.Anchorto EcmaScript 6 class
- Converted Two.Vectorto EcmaScript 6 class
- Two.interpretappropriately inherits classes to- <g />tags @elShiaLabeouf (opens new window)
- Two.interpretinherits classes and- data-*attributes @elShiaLabeouf (opens new window)
# Dec 15, 2021 v0.7.13
Dec 15, 2021
v0.7.13 (opens new window)- Improved SVG gradient interpretation
- Two.interpretcan properly unwrap CSS- url()commands
- Added Two.Gradient.unitsand respected in all renderers
- Default units space for Two.GradientisobjectBoundingBox
- Removed destructive attribute assignments in Two.interpret
- Interpreted gradients are reused as <defs />
# Nov 24, 2021 v0.7.12
Nov 24, 2021
v0.7.12 (opens new window)- Made mask removal possible on Two.Groups,Two.Paths, andTwo.Points'
- Simplified Two.Points.verticesmanagement for renderers improving adaptability
# Nov 20, 2021 v0.7.10
Nov 20, 2021
v0.7.10 (opens new window)- Fixed empty vertices issue on Two.Points
# Nov 11, 2021 v0.7.9
Nov 11, 2021
v0.7.9 (opens new window)- Made Two.loadandTwo.interpretconsistently apply SVGviewBox
- Made Two.Rectangle.originact as inverse anchor positioning
- Made Two.Path.toObjectobjectifyfillandstrokeattributes that areTwo.TextureandTwo.Gradient
- Improved reassigned id selection on interpreted SVG elements
- Improved Two.loadgroup duplication
- Added Two.PointsandTwo.makePointsto all renderers
- Made Two.releasemimic behavior ofTwo.remove
# Jul 13, 2021 v0.7.8
Jul 13, 2021
v0.7.8 (opens new window)- Made types.d.tsa shim of a module so that it can at least be loaded in TypeScript projects while the ES6 class declaration is still work-in-progress
# Jul 10, 2021 v0.7.6
Jul 10, 2021
v0.7.6 (opens new window)- Fixed idsetting on all objects of Two.js
- Fixed Two.ArcSegment.cloneouter radius issue
- Standardized vertex generation in higher order primitives
- Type declaration improvements
- Improved Two.Group.center,Two.Group.corner,Two.Path.center,Two.Path.corner
- Improved SVG gradient interpretation
- Added <defs />interpretation
- Added Two.Path.maskandTwo.Text.maskproperties
- Standardized Texture.idto be compliant with otherTwo.Shape.id
- Added ability to interpret <clipPath />and<image />SVG elements
# Apr 23, 2021 v0.7.5
Apr 23, 2021
v0.7.5 (opens new window)- Improved Two.Circle.beginning&Two.Circle.endingbehavior
- Improved fittedlogic on instances ofTwo
- Improved Two.ChildrenandTwo.Collectioninstantiation versatility
- Improved Two.Group.getBoundingClientRect,Two.Path.getBoundingClientRect, andTwo.Text.getBoundingClientRect
- Improved higher level shapes', like Two.Circle, ability to handle zeroed out arguments
# Apr 2, 2021 v0.7.4
Apr 2, 2021
v0.7.4 (opens new window)- Improved Typescript type declarations
- Successfully export extras/directory in both JavaScript and JavaScript Module format
- Added Two.Shape.skewXandTwo.Shape.skewY@gburlet (opens new window)
# Mar 26, 2021 v0.7.3
Mar 26, 2021
v0.7.3 (opens new window)- Exposed Two.Shape.rendererfor easier access to underlying SVG elements
- Added Typescript declaration types to Two.js
- Made Two.Grouplisten toTwo.Shape.idchanges through new observable property and flags
- Improved Two.interpretperformance and functionality through improved regular expressions @adroitwhiz (opens new window)
- Two.Group.visibleis a property held on the group and does not trickle down to children
- Improved scientific notation interpretation in SVG elements
- Two.loadappends a hidden DOM element to the document's- <head />so that- getComputedStylesworks more consistently with- Two.interpret
# Jan 12, 2021 v0.7.1
Jan 12, 2021
v0.7.1 (opens new window)- Added Two.AutoCalculateImportedMatricesto control different ways of importing SVG transformations
- Fixed Two.Text.classNameapplication
- Added basic text support in Two.interpret
- Exposed Two.fitfor external use
- Added a fittedargument to theTwoconstructor to make instance adaptively match the size of its parent element
- Simplified Two.releasemethod
- Added support for scientific notation in Two.interpret
- Added Two.Text.decorationstyling toTwo.CanvasRendererandTwo.WebGLRenderer
- Increased precision on Two.Utils.toFixedfor Firefox transformation engine performance increase
- Added support to import <use />tags from SVG interpretation @eulertour (opens new window)
- Removed extraneous underscore calls from Two.Utils@adroitwhiz (opens new window)
- Ensured Two.interpretrespects theaddparameter to be added (or not) to the current instance
- Modularized Two.js classes / files @adroitwhiz (opens new window)
- Made Two.js compatible with importmodules @adroitwhiz (opens new window)
- Added wiki as VuePress (opens new window) project
# Jan 22, 2020 v0.7.0
Jan 22, 2020
v0.7.0 (opens new window)- Exposed resolutionparameter inTwo.makeCircleandTwo.makeEllipseas the final parameter
- Made Two.CircleandTwo.Ellipserecalculate controls points on_updateand made vertex amounts cyclical @adroitwhiz (opens new window)
- Added ESLint (opens new window) scripts to development environment @adroitwhiz (opens new window)
- Improve performance of WebGLRenderer by leveraging uniform to construct plane and removing duplicate render calls @adroitwhiz (opens new window)
- Unpacked scaleobjects in WebGLRenderer @adroitwhiz (opens new window)
- Removed unnecessary gl.colorMaskcalls @adroitwhiz (opens new window)
- Removed Two.Utils.toFixedcalls on Canvas and WebGLRenderers @adroitwhiz (opens new window)
- Two.Shape.cloneclones- Two.Shape.matrixwhen- Two.Shape.matrix.manualis set to- true
- Improved Two.Group.maskrendering inTwo.WebGLRenderer
- Fixed Two.WebGLRenderer.setSizerecursive loop error
- Connected Two.Shape.classNametoTwo.Shape.classListfor searching and class assignment in SVG elements
- Performance improvements on canvas HTML5 styles @brandonheyer (opens new window)
- Added trickle down styling to Two.Group.closed,Two.Group.curved, andTwo.Group.automatic
- Check for Duplicity on Two.Group.add
- Accounted for offset positions in Two.Path.centerandTwo.Group.centermethods
- Exposed Two.Shape.matrixas a publicly accessible property
- Removed Two.Utils.deltaTransformPointand patchedTwo.Utils.decomposeMatrixto more accurately parse matrices
- Added support for various position inclusion of gradients and other effects in Two.interpret
- Improved Two.Utils.applySvgAttributesrotation from SVG interpretation
- Added Two.makeArrowfor Simple Triangular Tipped Arrows @mike168m (opens new window)
- Improved Two.Matrixefficiency of calculations
- Added Two.Path.dashes.offsetandTwo.Text.dashes.offsetproperties for animating dashed strokes in all renderers
- Fixed Two.Path.cornermethod to not be additive on successive invocations
- Split Two.Matrix.toArrayinto two different functions. One for 2D transforms and one for a plain object (JSON) representation
- Added Two.Matrix.toTransformArrayintended for 2D transformation use internally
- WebGLRenderermore robustly supports displaying bitmap content
- Added <g />attributes to be inherited by children in SVG interpretation
- Added offscreenElementas an option when constructing WebGL Renderers for WebWorker compatibility
- Added Two.Shape.positionaccessor toTwo.Shape.translationfor ease of use with matter.js (opens new window)
- Added Two.Path.dashesandTwo.Text.dashessupport to WebGL and Canvas Renderers
# Dec 8, 2018 v0.7.0-beta.3
Dec 8, 2018
v0.7.0-beta.3 (opens new window)- Canvas Renderer supports dashed and non dashed paths
- Enforce Two.Rectanglehas fourvertices
- Fixed Two.Path.closedon latestendingcalculations
# Nov 18, 2018 v0.7.0-beta.2
Nov 18, 2018
v0.7.0-beta.2 (opens new window)- Updated Two.js compatibility with webpack and node-canvas 2.0.0+
# Nov 3, 2018 v0.7.0-beta.1
Nov 3, 2018
v0.7.0-beta-1 (opens new window)- Altered Two.Path.cloneandTwo.Text.cloneto use references where possible and to_update()on return
- Improved multi-decimal and arc SVG interpretation
- Added Two.Commands.arcfor better arc rendering across all renderers
- Two.Pathand- Two.Textnow have- dashesproperty to define stroke dashing behavior @danvanorden (opens new window)
- Two.Vectorarithmetic methods made more consistent — still need to improve performance
- Two.Path.verticeswill not clone vectors, improving developer clarity
- Two.js clone methods do not force adding to a parent
- Two.ImageSequence,- Two.Sprite, and- Two.Rectanglehave- originproperties for offset rendering
- Two.Group.getBoundingClientRectwill pass-through on effects instead of break
- Two.interpretapply SVG node- styleattributes to paths. Inherits from groups- and infers SVG- viewBoxattribute against Two.js instance
- Two.interpretimproves multi-decimal formatted- dattributes
- Two.ZUIadded through the new- /extrasfolder
- Two.Text.getBoundingClientRectnow returns an estimated bounding box object
- Two.interpretproperly assigns back calculated- Zcoordinates
- Two.loadnow immediately returns a- Two.Groupfor use without callbacks if desired
- Added Two.Group.lengthto return the calculated length of all child paths
- Two.Group.beginningand- Two.Group.endingcalculate based on child- Two.Paths for intuitive grouped animating
- Added Two.Utils.shimto properly handlecanvasandimageelement spoofing in headless environments
- Improved conformance between primitive shapes
- Two.Path.getBoundingClientRectconsiders control points from bezier curves
- Two.Path.beginningand- Two.Path.endingcalculate based on distance increasing accuracy for animation, but also performance load
- Moved Two.Path._verticesunderlying to list of rendered points toTwo.Path._renderer.vertices
- Improved accuracy of Two.Path.endingandTwo.Path.beginningon open paths
- Added specific clonemethod toTwo.ArcSegment,Two.Circle,Two.Ellipse,Two.Polygon,Two.Rectangle,Two.RoundedRectangle, andTwo.Starprimitives
- Added ability to read viewBoxproperty from root SVG node inTwo.interpret
- Added more reliable transform getter in Two.interpret
- Added rxandryproperty reading onTwo.Utils.read.rect
- Added Two.Utils.read['rounded-rect']to interpret Rounded Rectangles
- Added ability for Two.RoundedRectangle.radiusto be aTwo.Vectorfor x, y component styling
- Added ES6 compatible ./build/two.module.jsfor importing library
- Improved QSVG interpretation
- Two.Texture,- Two.Sprite, and- Two.ImageSequenceimplemented in- WebGLRenderer
- Added classNameproperty toTwo.Shapes for easier CSS styling inSVGRenderer@fr0 (opens new window)
- Two.Events.resizeis now bound to a renderer's- setSizefunction giving a more generic solution to change scenegraph items based on dimensions changing
# Dec 1, 2017 v0.7.0-alpha.1
Dec 1, 2017
v0.7.0-alpha-1 (opens new window)- Fixed closed Two.Path.getPointAtmethod to clamp properly
- Added Two.Texture.repeatfor describing pattern invocations
- Added Two.Texture,Two.Sprite, andTwo.ImageSequence
- Removed Two.Shapeinheritance forTwo.Gradients
- Added Two.Vector.rotatemethod @ferm10n (opens new window)
- Objects clone to parent only if parent exists @ferm10n (opens new window)
- Vendor agnostic requestAnimationFrame@ferm10n (opens new window)
- Two.Utils.Events.listenToand- Two.Utils.Events.stopListening@ferm10n (opens new window)
- Two.Utils.Eventsadded to- Two.Path.prototypefor event inheritance @ferm10n (opens new window)
- Enhanced Two.Shape.scaleto allow both numbers andTwo.Vectoras property value
- Made Two.interpretuse latest primitives
- Added Two.Circleprimitive
- Two.Shape.translationis now a getter/setter and can be replaced
- Fixed translation interpretation to strip out 'px'strings
- Removed Two.SineRing— makeTwo.Star.curved = trueand it's the same effect
- Enhanced Two.ArcSegment,Two.Ellipse,Two.Polygon,Two.Rectangle,Two.RoundedRectangle,Two.Star
- Fixed Two.Anchor.relativeinterpretation insvg,canvas, andwebglrenderers
- Made Getters / Setters enumerable for iteration compatibility
- Fixed Two.Utils.Collection.splice method and added additional test
- Added compatibility with node.js (opens new window), browserify (opens new window), and node-canvas (opens new window)
- Removed third party dependencies
- Added removemethod toTwo.Text
- Fixed ordering on same parent additions for Two.Group
# Feb 9, 2016 v0.6.0
Feb 9, 2016
v0.6.0 (opens new window)- Updated Two.CanvasRenderer.ctx.imageSmoothingEnabledto not use deprecated invocation, issue 178 (opens new window)
- Fixed Two.Group.maskinSVGRendererto append to DOM correctly
- Updated requireimports to be compatible with require.js (opens new window)
- Added Two.Textfor programmatically writing text in Two.js
# Oct 1, 2015 v0.5.0
Oct 1, 2015
v0.5.0 (opens new window)- Added support for two.interpretto importsvg's gradients
- Added Two.Utils.xhrandtwo.loadmethods to asynchronously load SVG files
- Added Two.Gradient,Two.LinearGradient, andTwo.RadialGradient
- Added dependency check to ensure ASM loading in environments like NPM as well as in the browser
- Properly deleted webgltextures on removal ofTwo.Path
- Added support for two.interpretto importsvg's Elliptical Arcs (opens new window)
- Added Two.ArcSegmentandTwo.SineRingas new shapes invoked likeTwo.Path@chrisdelbuck (opens new window)
- Added Two.Line,Two.Rectangle,Two.RoundedRectangle,Two.Ellipse,Two.Polygon, andTwo.Staras new shapes invoked likeTwo.Path
- Breaking: renamed Two.PolygontoTwo.Path
- Performance enhancements to webglrenderer
- Performance enhancements to canvasrenderer Leo Koppelkamm (opens new window)
- Enabled render ordering in Two.Group.childrenbased on previous augmentation
- Augmented Two.Group.childrento inherit fromTwo.Collectioneffectively making it an array instead of a map Leo Koppelkamm (opens new window)- The map can still be accessed at Two.Group.children.ids
 
- The map can still be accessed at 
# Jul 22, 2014 v0.4.0
Jul 22, 2014
v0.4.0 (opens new window)- Updated Two.interpretto handle polybezier path data
- Added Two.Group.maskandTwo.Polygon.clipin order to create clipping masks
- Two.Grouphas own- opacityproperty Leo Koppelkamm (opens new window)
- Rendering optimizations Leo Koppelkamm (opens new window)
- Two.noConflictnon-destructive command internally to the library
- Two.interpretdecomposes- transformattribute of source tag
- Two.interprethandles item irregularities from Inkscape (opens new window)
- Changed Two.Identifierto use underscores instead of hyphens for dot-notation access Leo Koppelkamm (opens new window)
- Added Two.Group.getByIdandTwo.Group.getByClassNamemethods for convenient selection Leo Koppelkamm (opens new window)
- Added classListto allTwo.Shapes Leo Koppelkamm (opens new window)
- Enabled inference of applied styles on imported svgs Leo Koppelkamm (opens new window)
- Added Two.Polygon.getPointAtmethod to get coordinates on a curve/line
- Added Two.Polygon.lengthproperty andTwo.Polygon._updateLengthmethod to calculate length of curve/line
- Updated Two.Group.prototypeobservable properties onTwo.Polygon.Propertiesto ensure each property is considered unique
- Two.Polygon.verticesfirst and last vertex create automated control points when- Two.Polygon.curved = true
- Updated Two.Polygon.subdividemethod to accommodateTwo.makeEllipse
- Enabled idto be properly interpreted from SVG elements @chrisdelbuck (opens new window)
- Updated webglrenderergetBoundingClientRectto accommodaterelativeanchors
- Updated beginningandendingto clamp to each other
- Reorganized Two.Polygon._updateandTwo.Polygon.plotin order to handlebeginningandendingproperties
- Updated Two.getComputedMatrixandTwo.Polygon.getBoundingClientRectto adhere to nested transformations
- Updated Two.Anchorto changecontrolpoints relatively by default throughanchor.relativeproperty
- Updated Two.Polygon.subdividemethod to accommodatecurved = falsecircumstances
- Updated svg,canvas, andwebglrenderers to properly reflect holes in curvedTwo.Polygons
- Updated Two.Groupclonemethod
- Added toObjectmethod toTwo.Group,Two.Polygon,Two.Anchor
- Two.Polygoninitializes- polygon.cap = 'butt'and- polygon.join = 'miter'based on Adobe Illustrator defaults
- Two.Polygon.subdividemethod now works with- Two.Commands.movefor noncontiguous polygons
- Internally update matrices on getBoundingClientRectin order to remove the need to defer or wait for internal variables to be up-to-date
- Refactor of renderers and scenegraph for performance optimization and lower memory footprint
- Relinquished internal events for flags
- Prototypical declaration of Object.defineProperty
- Added _updateandflagResetmethods toTwo.Shape,Two.Group, andTwo.Polygon
- Decoupled canvasandwebglrenderers and are now independent
- Added _matrix.manualto override the default behavior of aTwo.Polygontransformation
- Localized variables per file as much as possible to reduce Garbage Collection on runtime
 
# Oct 25, 2013 v0.3.0
Oct 25, 2013
v0.3.0 (opens new window)- Can properly pass domElementon construction of new instance of two
- Added overdrawboolean towebglrenderer @arodic (opens new window)
- Added support for ie9 svg interpretation @tomconroy (opens new window)
- Added subdividemethod forTwo.PolygonandTwo.Group
- Ensure sure that manualproperly is set on construction ofTwo.Polygonthat it bindsTwo.Anchor.controlschange events
- Added automatic High DPI support for webglrenderer
- Updated two.interpret(svg)to handle compound paths
- Added Two.Anchor(opens new window) which represents all anchor points drawn in two.js
- Modified source to not have any instances of windowfor node use
- Updated to underscore.js 1.5.1
- Added Two.Utils.getReflectionmethod to properly get reflection's in svg interpretation
- Made Two.Vectorinherently not broadcast events and now needs to be explicitly bound to in order to broadcast events, which two.js does internally for you
- Created Two.Utils.Collectionan observable array-like class thatpolygon.verticesinherit @fchasen (opens new window)
- Added Two.Events.insertandTwo.Events.removefor use withTwo.Utils.Collection
- Properly recurses getBoundingClientRectfor bothTwo.GroupandTwo.Polygon
- Added Two.Versionto clarify forthcoming builds
- Updated hierarchy ordering of group.childrenincanvasandwebglrenderers
- Updated shallow and bidirectional removemethod forTwo.GroupandTwo.Polygon
- Added cornermethod toTwo.GroupandTwo.Polygonallowing anchoring along the upper lefthand corner of the form
- Modified centermethod ofTwo.GroupandTwo.Polygonto not affect thetranslationproperty to stay inline withcornermethod and any future orientation and anchoring logic
- Added automatic High DPI support for canvasrenderer
- Added overdrawboolean tocanvasrenderer
- Added AMD loader compatibility @thomasrudin (opens new window)
- Deferred two.update();to account for canvas and webgl
- Added removeandclearmethods totwoinstance
- Updated svg interpretation for webglcontext
- Added matrix property to all- Two.Shape's for advanced transformations
- Added inversemethod toTwo.Matrix
- Remove execution path dependency on utils/build.js @masonblier (opens new window)
- Added timeDeltaproperty to everytwoinstance
- Added gruntfile, package.json for more integration with npm, and dependency free build (build/two.clean.js) @iros (opens new window)
- Crossbrowser compatibility with noStrokeandnoFillcommands
# May 3, 2013 v0.2.0
May 3, 2013
v0.2.0 (opens new window)- First alpha release
# Jan 29, 2013 v0.1.0-alpha
Jan 29, 2013
v0.1.0-alpha (opens new window)- Proof of Concept built from Three.js