1.9.4

- Added KineticPlugin for use with KineticJS (http://kineticjs.com)

- Fixed an issue that caused the "includeDelay" parameter of restart() not to work properly when true.

- Fixed an issue that could cause a TimelineMax or TweenMax to render at the incorrect time when being unpaused after repeating
1.9.5

- Improvements to the ticker's fps capping algorithm

- Worked around an iOS bug that prevents requestAnimationFrame from working correctly in certain [relatively rare] situations. Falls back to setTimeout() in that scenario.

- Fixed issue that could cause zero-duration tweens/callbacks at the very beginning of a timeline not to fire their onReverseComplete if the playhead lands on a SUPER small value, like 0.000001 seconds.

- Adjusted the behavior of TimelineMax's tweenFromTo() method so that it seeks to the initial from() spot. That way, events/callbacks are suppressed which seems like the more natural behavior.

- Improved KineticPlugin, making it compatible with BezierPlugin internally

- Minor improvements in CSSPlugin, mostly around 3D calculations
1.9.6

- Fixes an issue that could cause callbacks not to fire if they are placed at the VERY beginning of a TimelineMax and it repeats. (recent reversion)

- Fixes an issue in CSSPlugin that could cause x/y portions of transforms to be reverted to 0 in a rare scenario, only in IE8 and earlier.

- Adds ability for directional rotation suffixes to be combined like "20_cw_short" or "30_ccw_short" so that you can go in a particular direction but prevent it from going around more than once.
1.9.7

- Improved iOS and Safari performance

- GSAP is now compatible with AngularJS's jqLite objects.

- Added feature to KineticPlugin so that it now works with DirectionalRotationPlugin

- Added auto-sensing of zero-duration tweens in the to() and fromTo() convenience methods of TimelineLite and TimelineMax so that immediateRender is automatically set in the most intuitive way (you can still override that). Basically, it zero-duration values get forwarded to the set() method.

- Fixed issue that could cause an error to be thrown in IE8 (and earlier) or Opera on transform-related properties that aren't supported. For example, if you tried to set transformStyle in IE8 or a perspective in Opera.

- Fixed very rare issue that could cause a tween to be killed prematurely if kill() was called for a particular property before the tween had fully initted.

- Fixed an issue that could cause a tween to be overwritten when it's back-to-back in a timeline with another tween of the same object/property and a rounding error occurs, making things 0.0000000001 off. (EXTREMELY rare)

- Fixed issue in TextPlugin that could cause non-breaking spaces to be added when the new text is shorter than the old text (this could look odd if the text-align is center). You can get the behavior back by setting padSpace:true.
1.9.8

- Slightly enhanced 3D transform speed so that if you're only moving the element, translate3d() is used instead of matrix3d().

- Now transforms are remembered by default instead of always re-parsing the css data because some browsers incorrectly report that data in certain scenarios, causing odd behavior. Using the GSAP-recorded values is faster anyway. You may force re-parsing of the transform data by passing parseTransform:true in the vars object.

- Fixed issue that could prevent autoRotate from working on BezierPlugin tweens of DOM elements using top/left instead of x/y (only when no transforms had been applied previously to that element).

- Fixed issue that could cause a <select> DOM element to be interpreted as a selector, thus its children would be affected by the tween instead of the element itself.

- Fixed an issue that could cause kill() not to work when you define specific css-related properties for the kill() to affect without prefixing them with "css_".

- Fixed issue that could cause the "x" portion of backgroundPosition to be interpreted as 50% instead of 0 in a very rare scenario, mostly in Firefox.

- The virtual playhead of a TimelineLite and TimelineMax instance now adjusts backwards if necessary when children are removed. For example, if the timeline has completely played and then all children are removed, its virtual playhead will return to 0.

- Fixed issue that could cause all callbacks to be removed from a TimelineMax if null was passed to its removeCallback() method as the first parameter.

- Fixed issue in TimelineMax that could cause a problem if its pause() method is called from within its onRepeat.
Added bower.json
1.10.0

- Added new Draggable class (in the "utils" package) that makes it simple to make almost any element draggable or spinnable, and impose bounds and (if you have ThrowPropsPlugin) apply kinetic-based motion.

- Added new "addPause()" method to TimelineLite that allows you to insert a pause action that will force calibration of the time at that exact spot and optionally call another method.

- Altered the order of operation in 3D CSS transforms so that scaleX and scaleY occur before rotation instead of after, thus they appear to always stay oriented with the element itself (this is the more common and intuitive behavior).

- Fixed issue that could cause a timeline to render things incorrectly if it was paused and seeked to an earlier time and then resumed (regression since 1.9.2)

- Fixed issue that could cause a security error if "window" was used as the target of a tween from within an iframe.

- Fixed autoAlpha issue in IE8 that could cause a flicker (the bug was actually in IE8 but we implemented a workaround)

- Fixed issue that could prevent tweening the css border of an <img> when autoCSS was used

- Fixed TweenMax.pauseAll() and TweenMax.resumeAll() so that the default "timelines" parameter is true instead of false.

- Small speed improvements for 3D transforms

- Now if you clearProps:"all", it will wipe all transform data stored in _gsTransforms
1.10.0 (patch)

Quick fix of the new addPause() method of TimelineLite (missing a parameter)
1.10.1

- Fixed issue that could cause the last tween in a TweenMax.staggerTo() not to swap in the tween instance for "{self}" in the onCompleteParams when an onCompleteAll was defined.

- Fixed an issue in AttrPlugin that could cause an error if the starting and ending values of the tween are identical.

- Fixed an issue in CSSPlugin that could cause the scaleZ not to be applied correctly in 3D transforms.

- Added a "force3D" boolean special property for CSSPlugin that, when true, applies a 3D transform which typically causes the browser to promote that element to its own layer on the GPU when possible (this can improve performance).

- Fixed an issue in KineticPlugin that could cause directional rotation values not to work after the first time.

- Changed the behavior of TextPlugin from() tweens so that it is more intuitive in terms of the direction.

- The _addTween() method of TweenPlugin now returns the PropTween instance if one is created (or null if not). This can help optimize some other code.

- Minor optimizations
1.10.2

- Added TweenMax.globalTimeScale() method for getting/setting the global time scale (often it's better to use TimelineLite.exportRoot(), though, so please see docs).

- Added a workaround for the iOS bug that sometimes neglects to call the requestAnimationFrame callback when returning to a tab that had been inactive (browser bug, not GSAP), causing animations to cease when returning to that tab.

- Fixed issue that could cause tweens in a nested TimelinLite or TimelineMax not to render their beginning states correctly when the virtual playhead of the grandparent is moved backwards beyond the starting point of the parent timeline.

- Altered autoAlpha behavior in CSSPlugin so that instead of explicitly setting visibility to "visible" when opacity isn't zero, it now sets it to "inherit" so that behaves more intuitively when it has an ancestor whose visibility is "hidden" (the descendent should honor that)

- Fixed an issue that could cause fromTo() tweens not to render their initial state correctly when the "from" value is relative (has a "+=" or "-=" prefix).

- Added "scroll", "scrollTop", and "scrollLeft" types to Draggable and improved performance.

- Minor performance improvements
Draggable 0.7.0

- Added new "trigger" functionality for defining a child element that serves as the initiator of dragging.

- Worked around several bugs in the stock browser of several Android devices.

- Improved performance by shifting rendering from mousemove/touchmove event handlers to the main requestAnimationFrame loop that drives GSAP.

- Improved algorithm for sensing the velocity of the user's mouse/touch.

- Fixed an issue that caused an error when the Draggable JS file was loaded BEFORE the <body> tag was declared.
1.10.3

- Significant update to Draggable (changes listed below)

- Added new "endX", "endY",  "pointerX" and "pointerY" properties to Draggable

- Renamed Draggable's xMax, xMin, yMax, and yMin properties to maxX, minX, maxY, and minY in order to be consistent with the other new properties like endX, pointerX, etc.

- Added a new applyBounds() and update() methods to Draggable

- Added the ability to have rotated elements work with bounds in Draggable

- Added new onThrowComplete and onThrowUpdate callbacks in Draggable

- Added new Draggable.get() method that allows you to find the Draggable instance associated with a particular element.

- Now the Draggable's x and y properties auto-update over the course of the throwProps tween by default.

- New "tween" property that refers to the actual TweenLite instance that’s generated by ThrowPropsPlugin when the mouse/touch is released.

- Worked around bug in IE9 that could cause a Draggable with type:"rotation" to use the top center as the default transformOrigin instead of the true center.

- Now when a link is clicked/tapped, the event's preventDefault() won't be called (so that the link will work) in Draggable.

- Various minor bug fixes and improvements in Draggable

----

- Fixed issue that could cause clearProps not to affect transformOrigin

- Improved compatibility with IE8's AlphaImageLoader filter so that it can be used in some cases to avoid the black edges on transparent PNGs.

- Fixed issue that could ignore transformPerspective when no rotation or skew was involved in the transform

- Added "frame" support in EaselPlugin (to tween the frame number of a MovieClip)

- Improved handling of situations where a tween/timeline is added to a timeline that was already finished (it needs to resume playback intuitively).

- Fixed an issue that could cause a timeline's rawTime() to be reported incorrectly in a very rare situation.
1.11.0

General:
--------

- Added isActive() method to all animation classes (TweenLite, TweenMax, TimelineLite, and TimelineMax)

- Added progress() and totalProgress() methods to TweenLite (they were already available in TweenMax, TimelineLite, and TimelineMax)

- Added a new "onlyActive" parameter to the getTweensOf() and killTweensOf() methods so that it's easy to find (or kill) only the active tweens of a particular target/element/object.

- Worked around an issue with the way browsers handle the "instanceof Array" evaluation in iframes that could cause the condition to return false when it should be true

- Fixed several issues that could cause zero-duration tweens inside timelines to render incorrectly in very particular (and rare) scenarios

- Adjusted behavior of callbacks (and zero-duration tweens) in timelines so that if the playhead moves directly on top of the callback/tween when suppressEvents is true, it will execute callbacks on the following render (when the playhead leaves that spot). So callbacks will get triggered EITHER when the playhead arrives OR when it leaves that spot (not both).

- Now if TweenLite is loaded more than once, only the first will matter (subsequent loads will basically be ignored) in terms of class definition.

Plugins:
----------

- Changed from storing "rotation" (and skewX/skewY) as radians to degrees in _gsTransform for better consistency.

- Fixed issue that could cause a relative opacity value not to work ("+=" or "-=" prefix)

- Worked around IE8 issue that could cause a className tween to throw an error in a rare circumstance.

- Added "userSelect" support (with automatic vendor prefixing)

- Fixed issue that could cause clearProps to get applied at the beginning of a from() tween in addition to at the end (it should only occur at the end).

- Fixed issue that could cause the "max" property not to be calculated properly on a scrollTo tween if the target was the window.

Draggable:
----------

- Windows 8 touch compatible

- There's a new "liveSnap" feature that you can turn on by setting liveSnap:true - that causes any snapping rules to apply during the drag (without liveSnap:true, snapping only applies to the END value(s)). This can be useful if, for example, you want to drag a box that always must fit in a grid or you want to rotate something in 10-degree increments (or whatever).

- You can specifically define maximum and minimum x/y/rotation values for bounds, like bounds:{minX:10, maxX:200, minY:20, maxY:300}. It will also recognize "maxRotation" and "minRotation", like bounds:{maxRotation:90, minRotation:-90}. This is a new option; you can still define bounds the old way instead with either a DOM element (like bounds:"#myElementID") or a generic object with top/left/width/height properties (like bounds:{top:10, left:20, width:100, height:200}). The new maxX/minX/maxY/minY technique is useful if, for example, you have an element that should be able to move 200 pixels to the left but you don't necessarily know its starting position.

- New "rotation", "endRotation", "maxRotation", and "minRotation" properties (which are identical to "x", "endX", "maxX" and "minX" but named more intuitively). It shouldn't break existing code because x/endX/maxX/minX are still populated in the same way. It just seemed like code would be more readable this way when the Draggable type is "rotation".

- Rotation is now always degree-based instead of radian-based. (this also applies to the data stored in the undocumented _gsTransform object in case you're tapping into that)

- There's a new "dragResistance" property (a value between 0 and 1) that controls how much resistance there is during any dragging (not just outside the bounds which is what edgeResistance affects).

- "resistance" has been renamed "throwResistance" so that it's more descriptive (now that we have edgeResistance and dragResistance, it seemed like plain "resistance" was just too vague).

- There's a new "pointerEvent" property that records the last mouse (or touch) event that affected the Draggable instance. That way, you can access that event's data like target, currentTarget, pageX, pageY, etc. By default, that event is also passed as a parameter to callbacks like onDragStart, onDrag, and onDragEnd.

- Added startDrag() and endDrag() methods so that you can manually trigger those, but please note that you MUST pass a mouse (or touch) event as a parameter to those because it's imperative for them to be able to do things like get the pageX and pageY for the mouse/touch position, and preventDefault(), etc.

- <a> links, input fields, textareas, buttons, and  elements with an "onclick" are all treated like live elements that should allow click interaction instead of initiating dragging, plus you can manually mark something as "clickable" by adding a data-clickable="true" attribute.

- A few minor bug fixes.
updated bower.json
Draggable 0.9.4 Update

- Fixed regression in 0.9.3 that caused <span> elements not to be draggable unless you added data-clickable="false" to the element as an attribute or put dragClickables:true on your Draggable.

- Improved idle performance by only activating the "tick" listener the first time an element is clicked/touched and then deactivated the listener after 15 seconds of inactivity.

- Added "newBounds" parameter to applyBounds() method so that you can [optionally] define a new bounds object/element.

- Added onThrowUpdateParams and onThrowCompleteParams.
1.11.1

- Fixed issue that could cause a callback (or zero-duration tween) not to render correctly the 2nd time if seek() is called on its parent timeline from within that same callback (rare, but possible).

- Fixed issue that could cause text selection to remain disabled on the target element of a Draggable after its disable() method is invoked.