diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0e60b41babf..09debd8445fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,2581 +1,2054 @@
-
-# 1.1.4 quantum-manipulation (2013-04-03)
+
+# 1.3.16 cookie-oatmealification (2015-06-05)
-_Note: 1.1.x releases are [considered unstable](http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html).
-They pass all tests but we reserve the right to change new features/apis in between minor releases. Check them
-out and please give us feedback._
-_Note: This release also contains all bug fixes available in [1.0.6](#1.0.6)._
+## Bug Fixes
+- **$compile:** throw error on invalid directive name
+ ([634e4671](https://github.com/angular/angular.js/commit/634e467172efa696eb32ef8942ffbedeecbd030e),
+ [#11281](https://github.com/angular/angular.js/issues/11281), [#11109](https://github.com/angular/angular.js/issues/11109))
+- **$cookies:** update $cookies to prevent duplicate cookie writes and play nice with external code
+ ([706a93ab](https://github.com/angular/angular.js/commit/706a93ab6960e3474698ccf9a8048b3c32e567c6),
+ [#11490](https://github.com/angular/angular.js/issues/11490), [#11515](https://github.com/angular/angular.js/issues/11515))
+- **$http:** throw error if `success` and `error` methods do not receive a function
+ ([731e1f65](https://github.com/angular/angular.js/commit/731e1f6534ab7fd1e053b8d7a25c902fcd934fea),
+ [#11330](https://github.com/angular/angular.js/issues/11330), [#11333](https://github.com/angular/angular.js/issues/11333))
+- **core:** ensure that multiple requests to requestAnimationFrame are buffered
+ ([0adc0364](https://github.com/angular/angular.js/commit/0adc0364265b06c567ccc8e90a7f09cc46f235b2),
+ [#11791](https://github.com/angular/angular.js/issues/11791))
+- **filterFilter:** fix matching against `null`/`undefined`
+ ([9dd0fe35](https://github.com/angular/angular.js/commit/9dd0fe35d1027e59b84b2396abee00d8683f3b50),
+ [#11573](https://github.com/angular/angular.js/issues/11573), [#11617](https://github.com/angular/angular.js/issues/11617))
+- **jqLite:**
+ - check for "length" in obj in isArrayLike to prevent iOS8 JIT bug from surfacing
+ ([647f3f55](https://github.com/angular/angular.js/commit/647f3f55eb7100a255272f7277f0f962de234a32),
+ [#11508](https://github.com/angular/angular.js/issues/11508))
+ - attr should ignore comment, text and attribute nodes
+ ([181e5ebc](https://github.com/angular/angular.js/commit/181e5ebc3fce5312feacaeace4fcad0d32f4d73c))
+- **ngAnimate:**
+ - ensure that minified repaint code isn't removed
+ ([d5c99ea4](https://github.com/angular/angular.js/commit/d5c99ea42b834343fd0362cfc572f47e7536ccfb),
+ [#9936](https://github.com/angular/angular.js/issues/9936))
+- **ngAria:** handle elements with role="checkbox/menuitemcheckbox"
+ ([1c282af5](https://github.com/angular/angular.js/commit/1c282af5abc205d4aac37c05c5cb725d71747134),
+ [#11317](https://github.com/angular/angular.js/issues/11317), [#11321](https://github.com/angular/angular.js/issues/11321))
+- **ngModel:** allow setting model to NaN when asyncValidator is present
+ ([b64519fe](https://github.com/angular/angular.js/commit/b64519fea7f1a5ec75e32c4b71b012b827314153),
+ [#11315](https://github.com/angular/angular.js/issues/11315), [#11411](https://github.com/angular/angular.js/issues/11411))
+- **ngTouch:**
+ - check undefined tagName for SVG event target
+ ([7560a8d2](https://github.com/angular/angular.js/commit/7560a8d2d65955ddb60ede9d586502f4e3cbd062))
+ - register touches properly when jQuery is used
+ ([40441f6d](https://github.com/angular/angular.js/commit/40441f6dfc5ebd5cdc679c269c4639238f5351eb),
+ [#4001](https://github.com/angular/angular.js/issues/4001), [#8584](https://github.com/angular/angular.js/issues/8584), [#10797](https://github.com/angular/angular.js/issues/10797), [#11488](https://github.com/angular/angular.js/issues/11488))
+- **select:** prevent unknown option being added to select when bound to null property
+ ([9e3f82bb](https://github.com/angular/angular.js/commit/9e3f82bbaf83cad7bb3121db756099b0880562e6),
+ [#11872](https://github.com/angular/angular.js/issues/11872), [#11875](https://github.com/angular/angular.js/issues/11875))
-## Features
-- **$compile:**
- - allow directives to modify interpolated attributes
- ([fe8d893b](https://github.com/angular/angular.js/commit/fe8d893b839e9b14e3e55a3a0523cc1e6355bdd5))
- - support for dynamic template generation
- ([eb53423a](https://github.com/angular/angular.js/commit/eb53423a41136fcda0c5e711f2d104952080354b))
- - add attribute binding support via ngAttr*
- ([cf17c6af](https://github.com/angular/angular.js/commit/cf17c6af475eace31cf52944afd8e10d3afcf6c0),
- [#1050](https://github.com/angular/angular.js/issues/1050), [#1925](https://github.com/angular/angular.js/issues/1925))
- - `'=?'` makes `'='` binding optional
- ([ac899d0d](https://github.com/angular/angular.js/commit/ac899d0da59157fa1c6429510791b6c3103d9401),
- [#909](https://github.com/angular/angular.js/issues/909), [#1435](https://github.com/angular/angular.js/issues/1435))
+## Features
-- **$q:** `$q.all()` now accepts hash
- ([e27bb6eb](https://github.com/angular/angular.js/commit/e27bb6eb132a68665c8fca3f5a216b19b1129ba6))
+- **travis:** run unit tests on iOS 8
+ ([1f650871](https://github.com/angular/angular.js/commit/1f650871266b88b3dab4a894a839a82ac9a06b69),
+ [#11479](https://github.com/angular/angular.js/issues/11479))
-- **$resource:** ability to override url in resource actions
- ([60f1f099](https://github.com/angular/angular.js/commit/60f1f099fc7e5197808cd6acb7407cdc40f50a3f))
-- **$route:** add `caseInsensitiveMatch` option for url matching
- ([5e18a15f](https://github.com/angular/angular.js/commit/5e18a15fb01d2e81adda68503754289fa9655082))
-- **http:**
- - support request/response promise chaining
- ([4ae46814](https://github.com/angular/angular.js/commit/4ae46814ff4e7c0bbcdbbefc0a97277283a84065))
- - set custom default cache in $http.defaults.cache
- ([99f3b70b](https://github.com/angular/angular.js/commit/99f3b70b2d316f5bb39e21249e752c29f49c90ab))
-- **JQLite:** `ready()` now supports `document.readyState=='complete'`
- ([753fc9e5](https://github.com/angular/angular.js/commit/753fc9e58d5e554d4930548558efecc283557eeb))
+
+# 1.3.15 locality-filtration (2015-03-17)
-- **Scenario:** autodisable animations when running e2e tests
- ([fec4ef38](https://github.com/angular/angular.js/commit/fec4ef38815340e8e5a6b65fd6c08f5c74e701d8))
+## Bug Fixes
-- **Scope:** add `$watchCollection` method for observing collections
- ([5eb96855](https://github.com/angular/angular.js/commit/5eb968553a1130461ab8704535691e00eb154ac2))
+- **$animate:** call `applyStyles` with options on `leave`
+ ([ebd84e80](https://github.com/angular/angular.js/commit/ebd84e8008f45ccaa84290f6da8c2a114fcfa8cd),
+ [#10068](https://github.com/angular/angular.js/issues/10068))
+- **$browser:** don't crash if history.state access causes error in IE
+ ([92767c09](https://github.com/angular/angular.js/commit/92767c098feaf8c58faf2d67f882305019d8160e),
+ [#10367](https://github.com/angular/angular.js/issues/10367), [#10369](https://github.com/angular/angular.js/issues/10369))
+- **Angular:** properly compare RegExp with other objects for equality
+ ([b8e8f9af](https://github.com/angular/angular.js/commit/b8e8f9af78f4ef3e556dd3cef6bfee35ad4cb82a),
+ [#11204](https://github.com/angular/angular.js/issues/11204), [#11205](https://github.com/angular/angular.js/issues/11205))
+- **date filter:** display localised era for `G` format codes
+ ([f2683f95](https://github.com/angular/angular.js/commit/f2683f956fcd3216eaa263db20b31e0d46338800),
+ [#10503](https://github.com/angular/angular.js/issues/10503), [#11266](https://github.com/angular/angular.js/issues/11266))
+- **filterFilter:**
+ - fix filtering using an object expression when the filter value is `undefined`
+ ([63b9956f](https://github.com/angular/angular.js/commit/63b9956faf4c3679c88a9401b8ccbb111c0294ee),
+ [#10419](https://github.com/angular/angular.js/issues/10419), [#10424](https://github.com/angular/angular.js/issues/10424))
+ - do not throw an error if property is null when comparing objects
+ ([01161a0e](https://github.com/angular/angular.js/commit/01161a0e9fb1af93e9f06535aed8392ed7f116a4),
+ [#10991](https://github.com/angular/angular.js/issues/10991), [#10992](https://github.com/angular/angular.js/issues/10992), [#11116](https://github.com/angular/angular.js/issues/11116))
+- **form:** allow dynamic form names which initially evaluate to blank
+ ([190ea883](https://github.com/angular/angular.js/commit/190ea883c588d63f8b900a8de1d45c6c9ebb01ec),
+ [#11096](https://github.com/angular/angular.js/issues/11096))
+- **ng/$locale:** add ERA info in generic locale
+ ([57842530](https://github.com/angular/angular.js/commit/578425303f2480959da80f31920d08f277d42010))
+- **rootScope:** prevent memory leak when destroying scopes
+ ([528cf09e](https://github.com/angular/angular.js/commit/528cf09e3f78ad4e3bb6a329ebe315c4f29b4cdb),
+ [#11173](https://github.com/angular/angular.js/issues/11173), [#11169](https://github.com/angular/angular.js/issues/11169))
+- **templateRequest:** avoid throwing syntax error in Android 2.3
+ ([75abbd52](https://github.com/angular/angular.js/commit/75abbd525f07866fdcc6fb311802b8fe700af174),
+ [#11089](https://github.com/angular/angular.js/issues/11089), [#11051](https://github.com/angular/angular.js/issues/11051), [#11088](https://github.com/angular/angular.js/issues/11088))
-- **angular.bootstrap:** support deferred bootstrap (mainly useful for tools like test runners and Batarang)
- ([603fe0d1](https://github.com/angular/angular.js/commit/603fe0d19608ffe1915d8bc23bf412912e7ee1ac))
-- **ngMobile:** add ngMobile module with mobile-specific ngClick
- ([707c65d5](https://github.com/angular/angular.js/commit/707c65d5a228b44ab3aea2fad95516fe6c57169a))
+## Features
-- **Directives:**
- - **ngKeypress:** add ngKeypress directive for handling keypress event
- ([f20646bc](https://github.com/angular/angular.js/commit/f20646bce5f0c914992a78fc2556bda136c27ac9))
- - **ngSwitch:** Preserve the order of the elements not in the ng-switch
- ([e88d6179](https://github.com/angular/angular.js/commit/e88d6179c3a6a137e75fa09de906fc83c6515db2),
- [#1074](https://github.com/angular/angular.js/issues/1074))
- - **ngAnimate:** add support for animation
- ([0b6f1ce5](https://github.com/angular/angular.js/commit/0b6f1ce5f89f47f9302ff1e8cd8f4b92f837c413))
- - **ngRepeat:** add support for custom tracking of items
- ([61f2767c](https://github.com/angular/angular.js/commit/61f2767ce65562257599649d9eaf9da08f321655))
+- **ngAria:**
+ - add `button` role to `ngClick`
+ ([b9ad91cf](https://github.com/angular/angular.js/commit/b9ad91cf1e86310a2d2bf13b29fa13a9b835e1ce),
+ [#9254](https://github.com/angular/angular.js/issues/9254), [#10318](https://github.com/angular/angular.js/issues/10318))
+ - add roles to custom inputs
+ ([21369943](https://github.com/angular/angular.js/commit/21369943fafd577b36827a641b021b1c14cefb57),
+ [#10012](https://github.com/angular/angular.js/issues/10012), [#10318](https://github.com/angular/angular.js/issues/10318))
+- **ngMock:**
+ - allow mock $controller service to set up controller bindings
+ ([b3878a36](https://github.com/angular/angular.js/commit/b3878a36d9f8e56ad7be1eedb9691c9bd12568cb),
+ [#9425](https://github.com/angular/angular.js/issues/9425), [#11239](https://github.com/angular/angular.js/issues/11239))
+ - add `they` helpers for testing multiple specs
+ ([7288be25](https://github.com/angular/angular.js/commit/7288be25a75d6ca6ac7eca05a7d6b12ccb3a22f8),
+ [#10864](https://github.com/angular/angular.js/issues/10864))
-## Breaking Changes
-- **$route:** due to [6f71e809](https://github.com/angular/angular.js/commit/6f71e809141bf89501e55c378921d6e7ec9512bc),
- in $routeChangeStart event, nextRoute.$route property is gone. Use the nextRoute object itself instead of nextRoute.$route.
-- **ngRepeat:** due to [61f2767c](https://github.com/angular/angular.js/commit/61f2767ce65562257599649d9eaf9da08f321655), it is now considered an error to have two identical items (identified by the new "track by" expression) in a collection that is fed into the repeater. This behavior was previously tolerated.
+
+# 1.3.14 instantaneous-browserification (2015-02-24)
-- **ngSwitch:** due to [e88d6179](https://github.com/angular/angular.js/commit/e88d6179c3a6a137e75fa09de906fc83c6515db2),
- elements not in the ng-switch were rendered after the ng-switch elements. Now they are rendered in-place.
- Templates with ngSwitch directives and nested non-ngSwitchWhen elements should be updated to preserve render order.
+## Features
- For example: The following was previously rendered with `
1
` after `
2
`:
+- **CommonJS:** - angular modules are now packaged for npm with helpful exports
-
-
1
-
2
-
+## Bug Fixes
- To keep the old behaviour, use:
+- **input:** create max and/or min validator regardless of initial value
+ ([abfce532](https://github.com/angular/angular.js/commit/abfce5327ce6fd29c33c62d2edf3600674a6b4c0),
+ [#10307](https://github.com/angular/angular.js/issues/10307), [#10327](https://github.com/angular/angular.js/issues/10327))
+- **ngAria:** correctly set "checked" attr for checkboxes and radios
+ ([944c150e](https://github.com/angular/angular.js/commit/944c150e6c3001e51d4bf5e2d8149ae4c565d1e3),
+ [#10389](https://github.com/angular/angular.js/issues/10389), [#10212](https://github.com/angular/angular.js/issues/10212))
+- **ngModel:** fix issues when parserName is same as validator key
+ ([6b7625a0](https://github.com/angular/angular.js/commit/6b7625a09508c4b5355121a9d4206a734b07b2e1),
+ [#10698](https://github.com/angular/angular.js/issues/10698), [#10850](https://github.com/angular/angular.js/issues/10850), [#11046](https://github.com/angular/angular.js/issues/11046))
-
-
2
-
1
-
-
-# 1.0.6 universal-irreversibility (2013-04-04)
+
+# 1.3.13 meticulous-riffleshuffle (2015-02-09)
## Bug Fixes
-- **$compile:**
- - compile replace directives in external template
- ([398691be](https://github.com/angular/angular.js/commit/398691beb3fc40a481afa258d181de06ec0d153c),
- [#1859](https://github.com/angular/angular.js/issues/1859))
- - whitelist file:// in url sanitization
- ([7b236b29](https://github.com/angular/angular.js/commit/7b236b29aa3a6f6dfe722815e0a2667d9b7f0899))
- - handle elements with no childNodes property
- ([bec614fd](https://github.com/angular/angular.js/commit/bec614fd90c48c3921a4b659912008574e553b40))
-- **$http:** don't encode URL query substring "null" to "+"
- ([86d191ed](https://github.com/angular/angular.js/commit/86d191ed4aea9015adc71b852223475c5c762c34))
-- **$httpBackend:** prevent DOM err due to dereferencing .responseText
- ([509ec745](https://github.com/angular/angular.js/commit/509ec745fdbb54b54672fbf8595a4958c16f2b53),
- [#1922](https://github.com/angular/angular.js/issues/1922))
-- **$location:**
- - parse FirefoxOS packaged app urls
- ([3a81dd8b](https://github.com/angular/angular.js/commit/3a81dd8bddbade81c4c9f734813458d0d969a4bf),
- [#2112](https://github.com/angular/angular.js/issues/2112))
- - correctly rewrite html5 url to hashbang url
- ([9befe370](https://github.com/angular/angular.js/commit/9befe37014141fbfdf0cded318d28322fc058c13))
-- **$route:** make nextRoute.$route private
- ([6f71e809](https://github.com/angular/angular.js/commit/6f71e809141bf89501e55c378921d6e7ec9512bc),
- [#1907](https://github.com/angular/angular.js/issues/1907))
-- **mocks:** prevent NPE when module definition outside of it.
- ([5c735eb4](https://github.com/angular/angular.js/commit/5c735eb4ab07144a62949472ed388cb185099201))
-- **dateFilter:** correct timezone date filter for 1/2 hour offsets
- ([1c1cd4fd](https://github.com/angular/angular.js/commit/1c1cd4fdf6b6d7511c7b8dc61b8042011dc54830))
+- **$location:** prevent page reload if initial url has empty hash at the end
+ ([4b3a590b](https://github.com/angular/angular.js/commit/4b3a590b009d7fdceda7f52e7ba0352a271b3256),
+ [#10397](https://github.com/angular/angular.js/issues/10397), [#10960](https://github.com/angular/angular.js/issues/10960))
+- **ngAria:** ensure native controls fire a single click
+ ([69ee593f](https://github.com/angular/angular.js/commit/69ee593fd2cb5f1d7757efbe6b256e4458752fd7),
+ [#10388](https://github.com/angular/angular.js/issues/10388), [#10766](https://github.com/angular/angular.js/issues/10766))
+- **ngMock:** handle cases where injector is created before tests
+ ([39ddef68](https://github.com/angular/angular.js/commit/39ddef682971d3b7282bf9d08f6eaf97b7f4bca4),
+ [#10967](https://github.com/angular/angular.js/issues/10967))
+- **sanitize:** handle newline characters inside special tags
+ ([11aedbd7](https://github.com/angular/angular.js/commit/11aedbd741ccddba060a9805adba1779391731da),
+ [ce49d4d6](https://github.com/angular/angular.js/commit/ce49d4d61bd02464b6c6376af8048f6eb09330a8)
+ [#10943](https://github.com/angular/angular.js/issues/10943))
+
+# 1.3.12 outlandish-knitting (2015-02-02)
+## Bug Fixes
+- **$controller:** throw better error when controller expression is bad
+ ([632b2ddd](https://github.com/angular/angular.js/commit/632b2ddd34c07b3b5a207bd83ca3a5e6e613e63b),
+ [#10875](https://github.com/angular/angular.js/issues/10875), [#10910](https://github.com/angular/angular.js/issues/10910))
+- **$parse:** remove references to last arguments to a fn call
+ ([7caad220](https://github.com/angular/angular.js/commit/7caad2205a6e9927890192a3638f55532bdaaf75),
+ [#10894](https://github.com/angular/angular.js/issues/10894))
+- **ngRoute:** dont duplicate optional params into query
+ ([f41ca4a5](https://github.com/angular/angular.js/commit/f41ca4a53ed53f172fb334911be56e42aad58794),
+ [#10689](https://github.com/angular/angular.js/issues/10689))
+- **ngScenario:** Allow ngScenario to handle lazy-loaded and manually bootstrapped applications
+ ([0bcd0872](https://github.com/angular/angular.js/commit/0bcd0872d8d2e37e6cb7aa5bc5cb0c742b4294f9),
+ [#10723](https://github.com/angular/angular.js/issues/10723))
+- **validators:** maxlength should use viewValue for $isEmpty
+ ([abd8e2a9](https://github.com/angular/angular.js/commit/abd8e2a9eb2d21ac67989c2f7b64c4c6547a1585),
+ [#10898](https://github.com/angular/angular.js/issues/10898))
-
-# 1.1.3 radioactive-gargle (2013-02-20)
-_Note: 1.1.x releases are [considered unstable](http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html).
-They pass all tests but we reserve the right to change new features/apis in between minor releases. Check them
-out and please give us feedback._
+## Features
-_Note: This release also contains all bug fixes available in [1.0.5](#1.0.5)._
+- **ngMocks:** cleanup $inject annotations after each test
+ ([6ec59460](https://github.com/angular/angular.js/commit/6ec5946094ee92b820bbacc886fa2367715e60b4))
-## Bug Fixes
-- **$compile:**
- - initialize interpolated attributes before directive linking
- ([bb8448c0](https://github.com/angular/angular.js/commit/bb8448c011127306df08c7479b66e5afe7a0fa94))
- - interpolate @ locals before the link function runs
- ([2ed53087](https://github.com/angular/angular.js/commit/2ed53087d7dd06d728e333a449265f7685275548))
-- **$http:**
- - do not encode special characters `@$:,` in params
- ([288b69a3](https://github.com/angular/angular.js/commit/288b69a314e9bd14458b6647532eb62aad5c5cdf))
-- **$resource:**
- - params should expand array values properly
- ([2a212344](https://github.com/angular/angular.js/commit/2a2123441c2b749b8f316a24c3ca3f77a9132a01))
+
+# 1.3.11 spiffy-manatee (2015-01-26)
+## Bug Fixes
-## Features
-
-- **$http:** allow overriding the XSRF header and cookie name
- ([8155c3a2](https://github.com/angular/angular.js/commit/8155c3a29ea0eb14806913b8ac08ba7727e1969c))
-- **$parse:** added `constant` and `literal` properties
- ([1ed63858](https://github.com/angular/angular.js/commit/1ed638582d2f2c7f89384d9712f4cfac52cc5b70))
-- **$resource:** expose promise based api via $then and $resolved
- ([dba6bc73](https://github.com/angular/angular.js/commit/dba6bc73e802fdae685a9f351d3e23c7efa8568a))
-- **$routeProvider:** add support to catch-all parameters in routes
- ([7eafbb98](https://github.com/angular/angular.js/commit/7eafbb98c64c0dc079d7d3ec589f1270b7f6fea5))
-- **Scope:**
- - expose transcluded and isolate scope info for batarang
- ([649b8922](https://github.com/angular/angular.js/commit/649b892205615a144dafff9984c0e6ab10ed341d))
- - only evaluate constant $watch expressions once
- ([1d7a95df](https://github.com/angular/angular.js/commit/1d7a95df565192fc02a18b0b297b39dd615eaeb5))
-- **angular.noConflict:** added api to restore previous angular namespace reference
- ([12ba6cec](https://github.com/angular/angular.js/commit/12ba6cec4fb79521101744e02a7e09f9fbb591c4))
-- **Directives:**
- - **ngSwitch:** support multiple matches on ngSwitchWhen and ngSwitchDefault
- ([0af17204](https://github.com/angular/angular.js/commit/0af172040e03811c59d01682968241e3df226774),
- [#1074](https://github.com/angular/angular.js/issues/1074))
-- **Filters:**
- - **date:** add `[.,]sss` formatter for milliseconds
- ([df744f3a](https://github.com/angular/angular.js/commit/df744f3af46fc227a934f16cb63c7a6038e7133b))
- - **filter:** add comparison function to filter
- ([ace54ff0](https://github.com/angular/angular.js/commit/ace54ff08c4593195b49eadb04d258e6409d969e))
+- **$location:** don't rewrite when link is shift-clicked
+ ([939ca37c](https://github.com/angular/angular.js/commit/939ca37cfe5f6fc35b09b6705caabd1fcc3cf9d3),
+ [#9904](https://github.com/angular/angular.js/issues/9904), [#9906](https://github.com/angular/angular.js/issues/9906))
+- **htmlAnchorDirective:**
+ - remove "element !== target element" check
+ ([779e3f6b](https://github.com/angular/angular.js/commit/779e3f6b5f8d2550e758cb0c5f64187ba8e00e29),
+ [#10866](https://github.com/angular/angular.js/issues/10866))
+ - don't add event listener if replaced, ignore event if target is different element
+ ([837a0775](https://github.com/angular/angular.js/commit/837a077578081bbd07863bef85241537d19fa652),
+ [#4262](https://github.com/angular/angular.js/issues/4262), [#10849](https://github.com/angular/angular.js/issues/10849))
-## Breaking Changes
-- **$http:** due to [288b69a3](https://github.com/angular/angular.js/commit/288b69a314e9bd14458b6647532eb62aad5c5cdf),
- $http now follows RFC3986 and does not encode special characters like `$@,:` in params.
- If your application needs to encode these characters, encode them manually, before sending the request.
-- **$resource:** due to [2a212344](https://github.com/angular/angular.js/commit/2a2123441c2b749b8f316a24c3ca3f77a9132a01),
- if the server relied on the buggy behavior of serializing arrays as http query arguments then
- either the backend should be fixed or a simple serialization of the array should be done
- on the client before calling the resource service.
+
+# 1.3.10 heliotropic-sundial (2015-01-20)
+## Bug Fixes
+- **$animate:** ensure no transitions are applied when an empty inline style object is provided
+ ([9b8df52a](https://github.com/angular/angular.js/commit/9b8df52aa960b9b6288fc150d55ea2e35f56555e),
+ [#10613](https://github.com/angular/angular.js/issues/10613), [#10770](https://github.com/angular/angular.js/issues/10770))
+- **$compile:** support class directives on SVG elements
+ ([7a9e3360](https://github.com/angular/angular.js/commit/7a9e3360284d58197a1fe34de57f5e0f6d1f4a76),
+ [#10736](https://github.com/angular/angular.js/issues/10736), [#10756](https://github.com/angular/angular.js/issues/10756))
+- **form:** clean up success state of controls when they are removed
+ ([cdc7280d](https://github.com/angular/angular.js/commit/cdc7280dd3d5a2ded784c06dd55fe36c2053fb6f),
+ [#10509](https://github.com/angular/angular.js/issues/10509))
+- **ngController:** allow bound constructor fns as controllers
+ ([d015c8a8](https://github.com/angular/angular.js/commit/d015c8a80b28754633c846fc50d11c9437519486),
+ [#10784](https://github.com/angular/angular.js/issues/10784), [#10790](https://github.com/angular/angular.js/issues/10790))
-
-# 1.0.5 flatulent-propulsion (2013-02-20)
-## Bug Fixes
+
+# 1.3.9 multidimensional-awareness (2015-01-13)
-- **$compile:**
- - sanitize values bound to `a[href]`
- ([9532234b](https://github.com/angular/angular.js/commit/9532234bf1c408af9a6fd2c4743fdb585b920531))
- - rename $compileNote to compileNode
- ([92ca7efa](https://github.com/angular/angular.js/commit/92ca7efaa4bc4f37da3008b234e19343a1fa4207),
- [#1941](https://github.com/angular/angular.js/issues/1941))
- - should not leak memory when there are top level empty text nodes
- ([791804bd](https://github.com/angular/angular.js/commit/791804bdbfa6da7a39283623bd05628a01cd8720))
- - allow startingTag method to handle text / comment nodes
- ([755beb2b](https://github.com/angular/angular.js/commit/755beb2b66ce9f9f9a218f2355bbaf96d94fbc15))
-- **$cookies:** set cookies on Safari&IE when `base[href]` is undefined
- ([70909245](https://github.com/angular/angular.js/commit/7090924515214752b919b0c5630b3ea5e7c77223),
- [#1190](https://github.com/angular/angular.js/issues/1190))
-- **$http:**
- - patch for Firefox bug w/ CORS and response headers
- ([e19b04c9](https://github.com/angular/angular.js/commit/e19b04c9ec985821edf1269c628cfa261f81d631),
- [#1468](https://github.com/angular/angular.js/issues/1468))
-- **$resource:**
- - update RegExp to allow urlParams with out leading slash
- ([b7e1fb05](https://github.com/angular/angular.js/commit/b7e1fb0515798e1b4f3f2426f6b050951bee2617))
-- **Directives:**
- - **a:** workaround IE bug affecting mailto urls
- ([37e8b122](https://github.com/angular/angular.js/commit/37e8b12265291918396bfee65d444a8f63697b73),
- [#1949](https://github.com/angular/angular.js/issues/1949))
- - **ngClass:** keep track of old ngClass value manually
- ([5f5d4fea](https://github.com/angular/angular.js/commit/5f5d4feadbfa9d8ecc8150041dfd2bca2b2e9fea),
- [#1637](https://github.com/angular/angular.js/issues/1637))
- - **ngSwitch:** make ngSwitch compatible with controller backwards-compatiblity module
- ([9b7c1d0f](https://github.com/angular/angular.js/commit/9b7c1d0f7ce442d4ad2ec587e66d2d335e64fa4e))
-- **Filters:**
- - **date:** invert timezone sign and always display sign
- ([b001c8ec](https://github.com/angular/angular.js/commit/b001c8ece5472626bf49cf82753e8ac1aafd2513),
- [#1261](https://github.com/angular/angular.js/issues/1261))
- - **number:** fix formatting when "0" passed as fractionSize
- ([f5835963](https://github.com/angular/angular.js/commit/f5835963d5982003a713dd354eefd376ed39ac02))
-- **scenario runner:** include error messages in XML output
- ([d46fe3c2](https://github.com/angular/angular.js/commit/d46fe3c23fa269dcc10249148f2af14f3db6b066))
-- **Misc:**
- - don't use instanceof to detect arrays
- ([3c2aee01](https://github.com/angular/angular.js/commit/3c2aee01b0b299995eb92f4255159585b0f53c10),
- [#1966](https://github.com/angular/angular.js/issues/1966))
- - angular.forEach should correctly iterate over objects with length prop
- ([ec54712f](https://github.com/angular/angular.js/commit/ec54712ff3dab1ade44f94fa82d67edeffa79a1d),
- [#1840](https://github.com/angular/angular.js/issues/1840))
-
-
-
-
-# 1.1.2 tofu-animation (2013-01-22)
-
-_Note: 1.1.x releases are [considered unstable](http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html).
-They pass all tests but we reserve the right to change new features/apis in between minor releases. Check them
-out and please give us feedback._
-
-_Note: This release also contains all bug fixes available in [1.0.4](#1.0.4)._
-## Features
+## Bug Fixes
-- **$compile:** support modifying the DOM structure in postlink fn
- ([cdf6fb19](https://github.com/angular/angular.js/commit/cdf6fb19c85560b30607e71dc2b19fde54760faa))
-- **$log:** add $log.debug()
- ([9e991ddb](https://github.com/angular/angular.js/commit/9e991ddb1de13adf520eda459950be5b90b5b6d9),
- [#1592](https://github.com/angular/angular.js/issues/1592))
-- **$parse:** allow strict equality in angular expressions
- ([a179a9a9](https://github.com/angular/angular.js/commit/a179a9a96eda5c566bda8a70ac8a75822c936a68),
- [#908](https://github.com/angular/angular.js/issues/908))
-- **$resource:**
- - allow dynamic default parameters
- ([cc42c99b](https://github.com/angular/angular.js/commit/cc42c99bec6a03d6c41b8e1d29ba2b1f5c16b87d))
- - support all $http.config actions
- ([af89daf4](https://github.com/angular/angular.js/commit/af89daf4641f57b92be6c1f3635f5a3237f20c71))
-- **$route:** allow using functions as template params in 'when'
- ([faf02f0c](https://github.com/angular/angular.js/commit/faf02f0c4db7962f863b0da2a82c8cafab2c706f))
-- **$timeout-mock:** add verifyNoPendingTasks method
- ([f0c6ebc0](https://github.com/angular/angular.js/commit/f0c6ebc07653f6267acec898ccef5677884e3081),
- [#1245](https://github.com/angular/angular.js/issues/1245))
-- **directive:**
- - added ngOpen boolean directive
- ([b8bd4d54](https://github.com/angular/angular.js/commit/b8bd4d5460d9952e9a3bb14992636b17859bd457))
- - ngKeydown, ngKeyup
- ([e03182f0](https://github.com/angular/angular.js/commit/e03182f018f5069acd5e883ce2e9349b83f2d03f),
- [#1035](https://github.com/angular/angular.js/issues/1035))
-- **limitTo filter:** limitTo filter accepts strings
- ([9e96d983](https://github.com/angular/angular.js/commit/9e96d983451899ef0cef3e68395c8f6c1ef83bbe),
- [#653](https://github.com/angular/angular.js/issues/653))
-- **scenario:**
- - add mouseover method to the ngScenario dsl
- ([2f437e89](https://github.com/angular/angular.js/commit/2f437e89781cb2b449abb685e36b26ca1cf0fff5))
- - fail when an option to select does not exist
- ([15183f3e](https://github.com/angular/angular.js/commit/15183f3e1fbee031c9595206163962788f98b298))
+- **$parse:** allow use of locals in assignments
+ ([86900814](https://github.com/angular/angular.js/commit/869008140a96e0e9e0d9774cc2e5fdd66ada7ba9))
+- **filterFilter:** use isArray() to determine array type
+ ([d4b60ada](https://github.com/angular/angular.js/commit/d4b60ada1ecff5afdb3210caa44e149e9f3d4c1b),
+ [#10621](https://github.com/angular/angular.js/issues/10621))
-## Breaking Changes
+## Features
-- **date:** due to [cc821502](https://github.com/angular/angular.js/commit/cc821502bca64d15e1c576bf20a62b28b3d9a88a),
- string input without timezone info is now parsed as local time/date
+- **ngMock/$exceptionHandler:** log errors when rethrowing
+ ([2b97854b](https://github.com/angular/angular.js/commit/2b97854bf4786fe8579974e2b9d6b4adee8a3dc3),
+ [#10540](https://github.com/angular/angular.js/issues/10540), [#10564](https://github.com/angular/angular.js/issues/10564))
+## Performance Improvements
-
-# 1.0.4 bewildering-hair (2013-01-22)
+- **ngStyleDirective:** use $watchCollection
+ ([4c8d8ad5](https://github.com/angular/angular.js/commit/4c8d8ad5083d9dd17c0b8480339d5f95943f1b71),
+ [#10535](https://github.com/angular/angular.js/issues/10535))
-## Bug Fixes
-- **$compile:**
- - do not wrap empty root text nodes in spans
- ([49f9e4ce](https://github.com/angular/angular.js/commit/49f9e4cef13e68ff85b3c160cf8fac6e7cd042a3),
- [#1059](https://github.com/angular/angular.js/issues/1059))
- - safely create transclude comment nodes
- ([74dd2f79](https://github.com/angular/angular.js/commit/74dd2f7980ea8ec434a6e0565d857c910653ed9b),
- [#1740](https://github.com/angular/angular.js/issues/1740))
-- **$injector:**
- - remove bogus fn arg
- ([b6b7c5a1](https://github.com/angular/angular.js/commit/b6b7c5a1d66073937709158da8c2d688cb45c9f6),
- [#1711](https://github.com/angular/angular.js/issues/1711))
- - provider can now be defined in the array format
- ([2c405f41](https://github.com/angular/angular.js/commit/2c405f417125c80c387a51baece8bf6e1e0c0a81),
- [#1452](https://github.com/angular/angular.js/issues/1452))
-- **$resource:**
- - HTTP method should be case-insensitive
- ([8991680d](https://github.com/angular/angular.js/commit/8991680d8ab632dda60cd70c780868c803c74509),
- [#1403](https://github.com/angular/angular.js/issues/1403))
- - correct leading slash removal in resource URLs
- ([b2f46251](https://github.com/angular/angular.js/commit/b2f46251aca76c8568ee7d4bab54edbc9d7a186a))
-- **$route:**
- - support route params not separated with slashes.
- ([c6392616](https://github.com/angular/angular.js/commit/c6392616ea5245bd0d2f77dded0b948d9e2637c8))
- - correctly extract $routeParams from urls
- ([30a9da5d](https://github.com/angular/angular.js/commit/30a9da5dc159dd1e19b677914356925c7ebdf632))
-- **Scope:** ensure that a scope is destroyed only once
- ([d6da505f](https://github.com/angular/angular.js/commit/d6da505f4e044f8a487ac27a3ec707c11853ee0a),
- [#1627](https://github.com/angular/angular.js/issues/1627))
-- **angular.equals:**
- - consistently compare undefined object props
- ([5ae63fd3](https://github.com/angular/angular.js/commit/5ae63fd385295d5a7bbdc79466f59727dcab1c85),
- [3c2e1c5e](https://github.com/angular/angular.js/commit/3c2e1c5e4d12529b1d69a6173c38097527dccc4f),
- [#1648](https://github.com/angular/angular.js/issues/1648))
-- **date filter:** parse string input as local time unless TZ is specified
- ([cc821502](https://github.com/angular/angular.js/commit/cc821502bca64d15e1c576bf20a62b28b3d9a88a),
- [#847](https://github.com/angular/angular.js/issues/847))
-- **jqLite:**
- - children() should only return elements
- ([febb4c1c](https://github.com/angular/angular.js/commit/febb4c1c35cf767ae31fc9fef1f4b4f026ac9de0))
- - make next() ignore non-element nodes
- ([76a6047a](https://github.com/angular/angular.js/commit/76a6047af690781b8238ba7924279470ba76d081))
-- **scenario:** don't trigger input events on IE9
- ([8b9e6c35](https://github.com/angular/angular.js/commit/8b9e6c3501746edb2c9e2d585e8e0eaeb8ba8327))
-- **Directives:**
- - **ngRepeat:** correctly apply $last if repeating over object
- ([7e746015](https://github.com/angular/angular.js/commit/7e746015ea7dec3e9eb81bc4678fa9b6a83bc47c),
- [#1789](https://github.com/angular/angular.js/issues/1789))
- - **ngSwitch:** don't leak when destroyed while not attached
- ([a26234f7](https://github.com/angular/angular.js/commit/a26234f7183013e2fcc9b35377e181ad96dc9917),
- [#1621](https://github.com/angular/angular.js/issues/1621))
- - **select:** support optgroup + select[multiple] combo
- ([26adeb11](https://github.com/angular/angular.js/commit/26adeb119bc4fafa6286de484626b8de4170abc9),
- [#1553](https://github.com/angular/angular.js/issues/1553))
-## Features
+
+# 1.3.8 prophetic-narwhal (2014-12-19)
-- **$compile:** support modifying the DOM structure in postlink fn
- ([cdf6fb19](https://github.com/angular/angular.js/commit/cdf6fb19c85560b30607e71dc2b19fde54760faa))
+## Bug Fixes
+- **filterFilter:**
+ - make `$` match properties on deeper levels as well
+ ([bd28c74c](https://github.com/angular/angular.js/commit/bd28c74c1d91c477a86f10fe36576cba0249e6ef),
+ [#10401](https://github.com/angular/angular.js/issues/10401))
+ - let expression object `{$: '...'}` also match primitive items
+ ([fb2c5858](https://github.com/angular/angular.js/commit/fb2c58589758744c0eef8c2ead3dbcf27a5cf200),
+ [#10428](https://github.com/angular/angular.js/issues/10428))
+- **ngAria:** trigger digest on `ng-click` via keypress, pass `$event` to expression
+ ([924e68c7](https://github.com/angular/angular.js/commit/924e68c7d522a1086969f3583d0ce87e59110bc5),
+ [#10442](https://github.com/angular/angular.js/issues/10442), [#10443](https://github.com/angular/angular.js/issues/10443), [#10447](https://github.com/angular/angular.js/issues/10447))
+- **orderBy:** compare timestamps when sorting date objects
+ ([661f6d9e](https://github.com/angular/angular.js/commit/661f6d9ecf1459ce3b2794c3cde373e17ae83972),
+ [#10512](https://github.com/angular/angular.js/issues/10512), [#10516](https://github.com/angular/angular.js/issues/10516))
-
-# 1.1.1 pathological-kerning (2012-11-26)
+## Performance Improvements
-_Note: 1.1.x releases are [considered unstable](http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html).
-They pass all tests but we reserve the right to change new features/apis in between minor releases. Check them
-out and please give us feedback._
+- **limitTo:** replace for loop with slice
+ ([cd77c089](https://github.com/angular/angular.js/commit/cd77c089ba2f4b94ccc74f32f0ffa9fb70851c02))
-_Note: This release also contains all bug fixes available in [1.0.3](#1.0.3)._
-## Features
-- **$cacheFactory:** cache.put now returns the added value
- ([168db339](https://github.com/angular/angular.js/commit/168db33985aa025eb48bc21087717ab70da0bd72))
-- **$http:** Allow setting withCredentials on defaults
- ([209b67df](https://github.com/angular/angular.js/commit/209b67df6a49fe1646ce63c5e7d11ed26e8abbc1),
- [#1095](https://github.com/angular/angular.js/issues/1095))
-- **$resource:** support custom headers per action
- ([fbdab513](https://github.com/angular/angular.js/commit/fbdab513dd48f667ad857030cf4b3481ecdd9097),
- [#736](https://github.com/angular/angular.js/issues/736))
-- **$sanitize:** support telephone links
- ([04450c48](https://github.com/angular/angular.js/commit/04450c48dfea065e1c9e4ab8adad94993ed1b037))
-- **FormController:** add ability to reset a form to pristine state
- ([733a97ad](https://github.com/angular/angular.js/commit/733a97adf87bf8f7ec6be22b37c4676cf7b5fc2b),
- [#856](https://github.com/angular/angular.js/issues/856))
-- **jqLite:** add triggerHandler()
- ([650fd933](https://github.com/angular/angular.js/commit/650fd933df614ac733cd43fe31d81d622a2ce2bc))
-- **linky filter:** allow optional 'target' argument
- ([610927d7](https://github.com/angular/angular.js/commit/610927d77b77700c5c61accd503a2af0fa51cfe6),
- [#1443](https://github.com/angular/angular.js/issues/1443))
-- **angular-mocks:** support mocha in angular mocks
- ([92558fe4](https://github.com/angular/angular.js/commit/92558fe4119fb1ee793d781de1888abef181c7f6))
-- **ngModel:** support ngTrim attribute on input
- ([d519953a](https://github.com/angular/angular.js/commit/d519953a4b219035587e3fcb2e9cc52e02b408ca))
-- **scenario:** add dblclick method to the ngScenario dsl
- ([8cb9c99e](https://github.com/angular/angular.js/commit/8cb9c99ec064fd95567118d29bfa4a19b8613ab3))
-- **CSP:** update to the latest CSP api
- ([af7e0bd0](https://github.com/angular/angular.js/commit/af7e0bd0a7c286667c526cb7e0c733d3ee5f17fd),
- [#1577](https://github.com/angular/angular.js/issues/1577))
+
+# 1.3.7 leaky-obstruction (2014-12-15)
## Bug Fixes
+- **$compile:** use `createMap()` for `$$observe` listeners when initialized from attr interpolation
+ ([8e28bb4c](https://github.com/angular/angular.js/commit/8e28bb4c2f6d015dfe1cec7755f1ca9b0ecef1f8))
- **$http:**
- - config.param should expand array values properly (see breaking change notes below)
- ([79af2bad](https://github.com/angular/angular.js/commit/79af2badcb087881e3fd600f6ae5bf3f86a2daf8),
- [#1363](https://github.com/angular/angular.js/issues/1363))
- - prevent CORS preflight checks by removing `X-Requested-With` from header defaults (see breaking
- change notes below)
- ([3a75b112](https://github.com/angular/angular.js/commit/3a75b1124d062f64093a90b26630938558909e8d),
- [#1004](https://github.com/angular/angular.js/issues/1004))
- - prevent CORS preflight checks by not setting `X-XSFR-TOKEN` header for cross domain requests (see
- breaking change notes below)
- ([fce100a4](https://github.com/angular/angular.js/commit/fce100a46c5681562253c3a856d67bbd35fbc2f2),
- [#1096](https://github.com/angular/angular.js/issues/1096))
+ - only parse as JSON when opening/closing brackets match
+ ([b9bdbe61](https://github.com/angular/angular.js/commit/b9bdbe615cc4070d2233ff06830a4c6fb1217cda),
+ [#10349](https://github.com/angular/angular.js/issues/10349), [#10357](https://github.com/angular/angular.js/issues/10357))
+ - don't convert FormData objects to JSON
+ ([40258838](https://github.com/angular/angular.js/commit/40258838031604feecb862afdc6f1f503d80ce4a),
+ [#10373](https://github.com/angular/angular.js/issues/10373))
+- **$parse:** a chain of field accessors should use a single `getterFn`
+ ([c90ad968](https://github.com/angular/angular.js/commit/c90ad96808be350526516626205c3a7d1da79024))
+- **ngRepeat:** allow extra whitespaces in `(key,value)` part of micro-syntax
+ ([ef640cbc](https://github.com/angular/angular.js/commit/ef640cbc2af5794c987e75472c12e63a59590044),
+ [#6827](https://github.com/angular/angular.js/issues/6827), [#6833](https://github.com/angular/angular.js/issues/6833))
+- **orderBy:** do not try to call `valueOf`/`toString` on `null`
+ ([a097aa95](https://github.com/angular/angular.js/commit/a097aa95b7c78beab6d1b7d521c25f7d9d7843d9),
+ [#10385](https://github.com/angular/angular.js/issues/10385), [#10386](https://github.com/angular/angular.js/issues/10386))
+
+## Features
-## Refactorings
+- **$compile:** add support for `ng-attr` with camelCased attributes
+ ([d8e37078](https://github.com/angular/angular.js/commit/d8e37078600089839f82f0e84022f1087e1fd3f2),
+ [#9845](https://github.com/angular/angular.js/issues/9845), [#10194](https://github.com/angular/angular.js/issues/10194))
+- **$http:** pass response status code to data transform functions
+ ([1b740974](https://github.com/angular/angular.js/commit/1b740974f5eb373bed04071d51f908ced7c5a8e5),
+ [#10324](https://github.com/angular/angular.js/issues/10324), [#6734](https://github.com/angular/angular.js/issues/6734), [#10440](https://github.com/angular/angular.js/issues/10440))
+- **$rootScope:** allow passing `locals` argument to `$evalAsync`
+ ([9b96cea4](https://github.com/angular/angular.js/commit/9b96cea462676d123e1b2dd852aedbe3da8fa4a0),
+ [#10390](https://github.com/angular/angular.js/issues/10390))
-- **$evalAsync:** have only one global async queue
- ([331cd5a8](https://github.com/angular/angular.js/commit/331cd5a8cb5efdafe8ad7eb386aed4033cfc1bb3))
+## Performance Improvements
-## Breaking Changes
+- **$compile:** only re-`$interpolate` attribute values at link time if changed since compile
+ ([9ae0c01c](https://github.com/angular/angular.js/commit/9ae0c01c2bcaff2f3906eec574f9c6ed8abde14a))
-- Due to fix for [#1363](https://github.com/angular/angular.js/issues/1363) it's possible but unlikely
- that $http will start generating different URLs for requests. This affects only cases when a request
- is made with a parameter, value of which is an array. If the server relied on the buggy behavior then
- either the backend should be fixed or a simple serialization of the array should be done on the client
- before calling the $http service.
-- Due to fix for [#1004](https://github.com/angular/angular.js/issues/1004) the `X-Requested-With` header
- is not set by $http service any more. If anyone actually uses this header it's quite easy to add
- it back via:
+## Breaking Changes
- ```
- myAppModule.config(['$httpProvider', function($httpProvider) {
- $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
- }]);
- ```
+- **orderBy:** due to [a097aa95](https://github.com/angular/angular.js/commit/a097aa95b7c78beab6d1b7d521c25f7d9d7843d9),
-- Due to fix for [#1096](https://github.com/angular/angular.js/issues/1096) `X-XSFR-TOKEN` header is
- no longer send for cross domain requests. This shouldn't affect any known production service. If we are
- wrong, please let us know ;-)
+Previously, if either value being compared in the orderBy comparator was null or undefined, the
+order would, incorrectly, not change. Now, this order behaves more like Array.prototype.sort, which
+by default pushes `null` behind objects, due to `n` occurring after `[` (the first characters of their
+stringified forms) in ASCII / Unicode. If `toString` is customized, or does not exist, the
+behaviour is undefined.
-
-# 1.0.3 bouncy-thunder (2012-11-26)
+
+# 1.3.6 robofunky-danceblaster (2014-12-08)
## Bug Fixes
-- **$cacheFactory:** return undefined when removing non-existent entry
- ([55d15806](https://github.com/angular/angular.js/commit/55d15806fb14b1d98b5ca2770bbbb59e11548c62),
- [#1497](https://github.com/angular/angular.js/issues/1497))
-- **$compile:**
- - prevent double attr interpolation w/ templateUrl
- ([fc115bfd](https://github.com/angular/angular.js/commit/fc115bfd0d18017f4bcef1e39fb22d97a98f8ab1),
- [#1166](https://github.com/angular/angular.js/issues/1166))
- - reference local in isolate scope
- ([8db47ca7](https://github.com/angular/angular.js/commit/8db47ca7d4303e3e45a838219a1f6e9be8770ed4),
- [#1272](https://github.com/angular/angular.js/issues/1272))
- - don't look for class directives in empty string
- ([54b3875b](https://github.com/angular/angular.js/commit/54b3875ba5cb6ce8ddac61ace33c1b2f600875ff))
- - compilation should not recurse into empty nodes
- ([008a782b](https://github.com/angular/angular.js/commit/008a782bc8ed8a7ebcb63d563d1420fd1b312452))
-- **$injector:** more conservative annotation parsing
-- **$location:** reset $location.$$replace with every watch call
- ([a32bc40f](https://github.com/angular/angular.js/commit/a32bc40fd75ca46e3581ad7a6e3a24a31df6e266),
- [#1111](https://github.com/angular/angular.js/issues/1111))
- ([d9eff86e](https://github.com/angular/angular.js/commit/d9eff86ef77dd76208cef21e882239d4db0eac1e))
-- **$parser:** string concatination with undefined model
- ([42c38b29](https://github.com/angular/angular.js/commit/42c38b29f7dcb3327fe58e630b8e2973676989e0),
- [#988](https://github.com/angular/angular.js/issues/988))
-- **$resource:**
- - prevent default params to be shared between actions
- ([94e1c039](https://github.com/angular/angular.js/commit/94e1c0391c351b6f691fad8abed2828fa20548b2))
- - allow falsy values in URL parameters
- ([4909d1d3](https://github.com/angular/angular.js/commit/4909d1d39d61d6945a0820a5a7276c1e657ba262))
- - ignore undefined parameters
- ([10e1c759](https://github.com/angular/angular.js/commit/10e1c759f4602d993a76b0eacf6a2d04c8880017),
- [#875](https://github.com/angular/angular.js/issues/875),
- [#782](https://github.com/angular/angular.js/issues/782))
-- **Scope:**
- - workaround for Chrome's memleak
- ([bd524fc4](https://github.com/angular/angular.js/commit/bd524fc4e5fc0feffe85632a7a6560da6bd9b762),
- [#1313](https://github.com/angular/angular.js/issues/1313))
- - allow removing a listener during event
- ([e6966e05](https://github.com/angular/angular.js/commit/e6966e05f508d1d2633b9ff327fea912b12555ac))
-- **$route:** support inline annotation on .resolve
- ([b0a05a75](https://github.com/angular/angular.js/commit/b0a05a7531ed7235aa6d2c4e3ea11373e1fc73f1))
-- **FormController:** propagate dirty state to parent forms
- ([04329151](https://github.com/angular/angular.js/commit/04329151d2df833f803629cefa781aa6409fe6a5))
-- **a:** prevent Opera from incorrectly navigating on link click
- ([c81d8176](https://github.com/angular/angular.js/commit/c81d8176cc55cd15acae05259ead73f90a01f0b7))
-- **jqLite:**
- - support append on document fragment
- ([96ed9ff5](https://github.com/angular/angular.js/commit/96ed9ff59a454486c88bdf92ad9d28ab8864b85e))
- - fire $destroy event via triggerHandler (this makes AngularJS compatible with **jQuery 1.8.x**)
- ([b9a9f91f](https://github.com/angular/angular.js/commit/b9a9f91fbf99b71cfde434b6277f4c7d2533556f),
- [#1512](https://github.com/angular/angular.js/issues/1512))
-- **Filters**
- - **currency:** Handle not-quite-zero values
- ([bca1604c](https://github.com/angular/angular.js/commit/bca1604c12262b66ce3b8004994fb4841fb8b87d),
- [#1469](https://github.com/angular/angular.js/issues/1469))
- - **date:**
- - make timezone optional
- ([9473780e](https://github.com/angular/angular.js/commit/9473780e77a960ba27644ca76c2413924cc8972e))
- - support sub-second precision on dateFilter
- ([f299fd51](https://github.com/angular/angular.js/commit/f299fd512248321b426a5ab924a329aa1b691280))
-- **Directives**
- - **ngClass:** works with class interpolation
- ([cebd015f](https://github.com/angular/angular.js/commit/cebd015f78c5e21bd37d4bc055dbcdc21dac2ef2),
- [#1016](https://github.com/angular/angular.js/issues/1016))
- - **ngClassOdd/ngClassEven:** support shrinking/reordering in repeaters
- ([d859dcec](https://github.com/angular/angular.js/commit/d859dcecea654d1d858cd756c6efb8435a453197),
- [6c67719d](https://github.com/angular/angular.js/commit/6c67719dfa6ff3f2a15a8e1e7660cf2e6e9155b0),
- [#1076](https://github.com/angular/angular.js/issues/1076))
- - **ngModel:** sync ngModel state with scope state
- ([e6d9bea4](https://github.com/angular/angular.js/commit/e6d9bea4f3b2eb28851298d3dc3a30d46062d58a),
- [#933](https://github.com/angular/angular.js/issues/933))
- - **ngRepeat:** now works better with primitive types
- ([e6d9bea4](https://github.com/angular/angular.js/commit/e6d9bea4f3b2eb28851298d3dc3a30d46062d58a),
- [#933](https://github.com/angular/angular.js/issues/933))
- - **ngSrc:** don't set src if value is empty string
- ([b6e4a711](https://github.com/angular/angular.js/commit/b6e4a71166c7f00f4140fd7ea8f0cd81b4487a3f))
- - **select:** select option with a label of 0 is not shown
- ([b3cae4f4](https://github.com/angular/angular.js/commit/b3cae4f457f1688346bbd0b08cccc9c504f83406),
- [#1401](https://github.com/angular/angular.js/issues/1401))
-- **scenario:**
- - emit RunnerBegin event
- ([95276a7e](https://github.com/angular/angular.js/commit/95276a7e1047c7a3ac6613d8612c62f544388fc9))
- - NPE when no angular loaded in test page
- ([84c13d96](https://github.com/angular/angular.js/commit/84c13d96ff6e993b2ee9ff6bf49614fc1d514b04))
- - support data-ng and x-ng based attributes
- ([249a1d84](https://github.com/angular/angular.js/commit/249a1d84e7ac3b8528d317b8b0a80acb5dd9a271),
- [#1020](https://github.com/angular/angular.js/issues/1020))
-
-
-## Docs
-
-- add plunkr support
- ([7c67b2fb](https://github.com/angular/angular.js/commit/7c67b2fb6afbc18f3593c64a5f339f04f9003f3c))
-- various small documentation fixes and improvements
-
-
-## Refactorings
-
-- name all anonymous watch functions in Angular
- ([ca30fce2](https://github.com/angular/angular.js/commit/ca30fce28ca13284bfa1c926e810ed75cdcde499),
- [#1119](https://github.com/angular/angular.js/issues/1119))
-
-
-
-
-
-# 1.1.0 increase-gravatas (2012-08-31)
-
-_Note: 1.1.x releases unlike 1.0.x are considered unstable.
-[More info](http://blog.angularjs.org/2012/07/angularjs-10-12-roadmap.html)_
-
-This release also contains all bug fixes available in [1.0.2](#1.0.2).
+- **$browser:** prevent infinite digests when clearing the hash of a url
+ ([10ac5948](https://github.com/angular/angular.js/commit/10ac5948097e2c8eaead238603d29ee580dc8273),
+ [#9629](https://github.com/angular/angular.js/issues/9629), [#9635](https://github.com/angular/angular.js/issues/9635), [#10228](https://github.com/angular/angular.js/issues/10228), [#10308](https://github.com/angular/angular.js/issues/10308))
+- **$http:** preserve config object when resolving from cache
+ ([facfec98](https://github.com/angular/angular.js/commit/facfec98412c0bb8678d578bade05ffef06a9e84),
+ [#9004](https://github.com/angular/angular.js/issues/9004), [#9030](https://github.com/angular/angular.js/issues/9030))
+- **$location:**
+ - allow hash fragments with hashPrefix in hash-bang location urls
+ ([2dc34a96](https://github.com/angular/angular.js/commit/2dc34a969956eea680be4c8d9f800556d110996a),
+ [#9629](https://github.com/angular/angular.js/issues/9629), [#9635](https://github.com/angular/angular.js/issues/9635), [#10228](https://github.com/angular/angular.js/issues/10228), [#10308](https://github.com/angular/angular.js/issues/10308))
+ - strip off empty hash segments when comparing
+ ([e93710fe](https://github.com/angular/angular.js/commit/e93710fe0e4fb05ceee59a04f290692a5bec5d20),
+ [#9635](https://github.com/angular/angular.js/issues/9635))
+- **$parse:**
+ - fix operators associativity
+ ([ed1243ff](https://github.com/angular/angular.js/commit/ed1243ffc7c2cb4bd5b4dece597597db8eb08e34))
+ - follow JavaScript context for unbound functions
+ ([429938da](https://github.com/angular/angular.js/commit/429938da1f45b8a649b8c77762fb0ae59b6d0cea))
+- **filterFilter:**
+ - don't match primitive sub-expressions against any prop
+ ([a75537d4](https://github.com/angular/angular.js/commit/a75537d461c92e3455e372ff5005bf0cad2d2e95))
+ - ignore function properties and account for inherited properties
+ ([5ced914c](https://github.com/angular/angular.js/commit/5ced914cc8625008e6249d5ac5942d5822287cc0),
+ [#9984](https://github.com/angular/angular.js/issues/9984))
+ - correctly handle deep expression objects
+ ([f7cf8460](https://github.com/angular/angular.js/commit/f7cf846045b1e2fb39c62e304c61b44d5c805e31),
+ [#7323](https://github.com/angular/angular.js/issues/7323), [#9698](https://github.com/angular/angular.js/issues/9698), [#9757](https://github.com/angular/angular.js/issues/9757))
+- **inputs:** ignoring input events in IE caused by placeholder changes or focus/blur on inputs with placeholders
+ ([55d9db56](https://github.com/angular/angular.js/commit/55d9db56a6f7d29b16f8393612648080c6d535d6),
+ [#9265](https://github.com/angular/angular.js/issues/9265))
+- **linky:** make urls starting with www. links, like markdown
+ ([915a891a](https://github.com/angular/angular.js/commit/915a891ad4cdcaa5e47e976db8f4d402d230be77),
+ [#10290](https://github.com/angular/angular.js/issues/10290))
+- **ngAnimate:** do not use jQuery class API
+ ([40a537c2](https://github.com/angular/angular.js/commit/40a537c25f70ad556a41bb2d00ea3e257410e9af),
+ [#10024](https://github.com/angular/angular.js/issues/10024), [#10329](https://github.com/angular/angular.js/issues/10329))
+- **ngMock:** allow numeric timeouts in $httpBackend mock
+ ([acb066e8](https://github.com/angular/angular.js/commit/acb066e84a10483e1025eed295352b66747dbb8a),
+ [#4891](https://github.com/angular/angular.js/issues/4891))
+- **ngModel:**
+ - always use the most recent viewValue for validation
+ ([2d6a0a1d](https://github.com/angular/angular.js/commit/2d6a0a1dc1e7125cab2e30244e35e97e11802843),
+ [#10126](https://github.com/angular/angular.js/issues/10126), [#10299](https://github.com/angular/angular.js/issues/10299))
+ - fixing many keys incorrectly marking inputs as dirty
+ ([d21dff21](https://github.com/angular/angular.js/commit/d21dff21ed8beb015ad911f11d57cceb56fc439f))
+- **ngSanitize:** exclude smart quotes at the end of the link
+ ([7c6be43e](https://github.com/angular/angular.js/commit/7c6be43e83590798cffef63d076fb79d5296fba2),
+ [#7307](https://github.com/angular/angular.js/issues/7307))
+- **numberFilter:** numbers rounding to zero shouldn't be negative
+ ([96c61fe7](https://github.com/angular/angular.js/commit/96c61fe756d7d3db011818bf0925e3d86ffff8ce),
+ [#10278](https://github.com/angular/angular.js/issues/10278))
+- **orderBy:**
+ - make object-to-primtiive behaviour work for objects with null prototype
+ ([3aa57528](https://github.com/angular/angular.js/commit/3aa5752894419b4638d5c934879258fa6a1c0d07))
+ - maintain order in array of objects when predicate is not provided
+ ([8bfeddb5](https://github.com/angular/angular.js/commit/8bfeddb5d671017f4a21b8b46334ac816710b143),
+ [#9566](https://github.com/angular/angular.js/issues/9566), [#9747](https://github.com/angular/angular.js/issues/9747), [#10311](https://github.com/angular/angular.js/issues/10311))
+
## Features
-- **$http:** support custom reponseType
- ([e0a54f6b](https://github.com/angular/angular.js/commit/e0a54f6b206dc2b6595f2bc3a17c5932e7477545),
- [#1013](https://github.com/angular/angular.js/issues/1013))
-- **$interpolate:**
- - provide contextual error messages
- ([d804bbcd](https://github.com/angular/angular.js/commit/d804bbcd51ec83bee1f4a3ccd42c3bd7eb38a988))
- - expose start/end symbols in run phase
- ([58f121a5](https://github.com/angular/angular.js/commit/58f121a5c293ed57043e22ed526fdf99642fca81))
-- **$sniffer:** auto detect CSP mode (currently requires Chrome on dev channel)
- ([167aa0c2](https://github.com/angular/angular.js/commit/167aa0c29c998be33c49d33302e099b36d1ce0be))
+- **$$jqLite:** export jqLite as a private service
+ ([f2e7f875](https://github.com/angular/angular.js/commit/f2e7f875e2ad4b271c4e72ebd3860f905132eed9))
+- **$injector:** print caller name in "unknown provider" errors (when available)
+ ([013b522c](https://github.com/angular/angular.js/commit/013b522c9e690665aecb0e0f656e4557a673ec09),
+ [#8135](https://github.com/angular/angular.js/issues/8135), [#9721](https://github.com/angular/angular.js/issues/9721))
+- **jsonFilter:** add optional arg to define custom indentation
+ ([1191edba](https://github.com/angular/angular.js/commit/1191edba4eaa15f675fa4ed047949a150843971b),
+ [#9771](https://github.com/angular/angular.js/issues/9771))
+- **ngAria:** bind keypress on ng-click w/ option
+ ([5481e2cf](https://github.com/angular/angular.js/commit/5481e2cfcd4d136a1c7f45cd4ce0fa1a8a15074d),
+ [#10288](https://github.com/angular/angular.js/issues/10288))
+## Breaking Changes
-
-# 1.0.2 debilitating-awesomeness (2012-08-31)
+- **$location:** due to [2dc34a96](https://github.com/angular/angular.js/commit/2dc34a969956eea680be4c8d9f800556d110996a),
-## Bug Fixes
+We no longer throw an `ihshprfx` error if the URL after the base path
+contains only a hash fragment. Previously, if the base URL was `http://abc.com/base/`
+and the hashPrefix is `!` then trying to parse `http://abc.com/base/#some-fragment`
+would have thrown an error. Now we simply assume it is a normal fragment and
+that the path is empty, resulting `$location.absUrl() === "http://abc.com/base/#!/#some-fragment"`.
-- **$compile:** denormalize directive templates
- ([dfe99836](https://github.com/angular/angular.js/commit/dfe99836cd98c2a1b0f9bde6216bd44088de275a))
-- **$interpolate:** $interpolateProvider.endSymbol() returns startSymbol
- ([20348717](https://github.com/angular/angular.js/commit/20348717640c0ef405c9fdcc8fec5b566efc48b3))
-- **jqLite:** better support for xhtml
- ([d3fa7a2e](https://github.com/angular/angular.js/commit/d3fa7a2e9e93c9dae13d852b28c878f7d6b7c420),
- [#1301](https://github.com/angular/angular.js/issues/1301))
-- **mocks:** free up memory after every spec
- ([1a8642aa](https://github.com/angular/angular.js/commit/1a8642aac2de40dccdab464e58dc164006c300bb))
-- **e2e test runner:** Adding meta tag to avoid cache issues
- ([5318588d](https://github.com/angular/angular.js/commit/5318588d6e8ee9a31f4002affd6858d25305aabf))
-- Directives:
- - **form:** prevent page reload when form destroyed
- ([054d40f3](https://github.com/angular/angular.js/commit/054d40f338f9000cddcf7f0513af37328b88ef41),
- [#1238](https://github.com/angular/angular.js/issues/1238))
- - **ngList:** remove data bound flicker
- ([fa62ea81](https://github.com/angular/angular.js/commit/fa62ea810f6c701e898dd07c6c9228f13d5b5e02))
- - **ngPluralize:** fixes ng-pluralize when using non-standard start/end symbols
- ([e85774f7](https://github.com/angular/angular.js/commit/e85774f709b9f681b0ff8d829b07568b0f844a62),
- [#1134](https://github.com/angular/angular.js/issues/1134))
- - **option:** support option elements in datalist
- ([9767f7bd](https://github.com/angular/angular.js/commit/9767f7bdd3e1ce6f65bdea992d67369ead13d813),
- [#1165](https://github.com/angular/angular.js/issues/1165))
-
-
-## Docs
-
-- Conceptual Overview of AngularJS (high level overview of how things work):
-
- ([7a5f25f6](https://github.com/angular/angular.js/commit/7a5f25f6671eb5f51b06615d74a05855ab79f31e))
-- Lots of spelling, grammar and other fixes:
- [9a710c78](https://github.com/angular/angular.js/commit/9a710c788d880785d2b02a9c5411eb15e9c278bf),
- [847d2da0](https://github.com/angular/angular.js/commit/847d2da0f8d1e265eda7b4dd3e7eb52ac86d784e),
- [dbefd671](https://github.com/angular/angular.js/commit/dbefd671e41c3bda481850bb7e566349e275d759),
- [cab5e1d9](https://github.com/angular/angular.js/commit/cab5e1d9b363eac6fd31b15c5b86f30993e2f147),
- [f00b6cca](https://github.com/angular/angular.js/commit/f00b6cca024a9418f353651f29c984f934575bd9),
- [2e365168](https://github.com/angular/angular.js/commit/2e3651686c2bd84cf464ecc236c8ad77e61179df),
- [536de148](https://github.com/angular/angular.js/commit/536de148214290f0b4a0595fa16c00da5e527e79),
- [a1107e81](https://github.com/angular/angular.js/commit/a1107e81ebf2254caf75718de2e3ec773cce0c56),
- [5ef9ed87](https://github.com/angular/angular.js/commit/5ef9ed87d82b109715a87e9aa1b1d5b63f515d3a),
- [8c81a0f3](https://github.com/angular/angular.js/commit/8c81a0f3728b9308854ceb9bf392ec467b95d8eb),
- [bde931af](https://github.com/angular/angular.js/commit/bde931afd5cf2483df236e06992666a0a4182794),
- [6553fe68](https://github.com/angular/angular.js/commit/6553fe68d17d42ec25e0c592ceaa1077cc0ec4f6),
- [13b5fd1b](https://github.com/angular/angular.js/commit/13b5fd1b9d60f1a9187da8a89db9272284ccdac4),
- [17209d5b](https://github.com/angular/angular.js/commit/17209d5b4a579edf8425715b5cdf25bc5cd96711),
- [31c82560](https://github.com/angular/angular.js/commit/31c825607dd524241c811ca3e401b119c810e977),
- [ab6937e2](https://github.com/angular/angular.js/commit/ab6937e2518bfd77d9fe42e3d2e11fe4a7a16814),
- [fbfda241](https://github.com/angular/angular.js/commit/fbfda241f616bcfe8273f501dd49120a3cb35fab),
- [206371b7](https://github.com/angular/angular.js/commit/206371b7372c242db234ca8da12d1c7a8a322d54),
- [b6b92bd8](https://github.com/angular/angular.js/commit/b6b92bd866e1d6d066f1c9bf1937496cd3e28664),
- [79f2d843](https://github.com/angular/angular.js/commit/79f2d843a8458bfdc23fe9f179a1416fe21f7533),
- [64a9cd8f](https://github.com/angular/angular.js/commit/64a9cd8f4fac1c518869a1c955fe60bd6ef76439),
- [7f6e1326](https://github.com/angular/angular.js/commit/7f6e1326f3a7a6a2ba2dbd48dd6571ebe929a7c1),
- [1fd2b3d4](https://github.com/angular/angular.js/commit/1fd2b3d402f36e395a1fe9ea7e3f91a1b2833426),
- [d56d69cc](https://github.com/angular/angular.js/commit/d56d69cc8319f69135a17a9bb5ae394123b33c51),
- [01e726b2](https://github.com/angular/angular.js/commit/01e726b2fa3fb0d2584c9bb8df116ff3a9f05879),
- [16136216](https://github.com/angular/angular.js/commit/161362164532af3578c9e3e8b52cd80b15345add),
- [92a3d282](https://github.com/angular/angular.js/commit/92a3d2821856c75eb95f8ec6ccf26d6a9b37fdd9),
- [4c585019](https://github.com/angular/angular.js/commit/4c5850195699b1d982963f25399d24bf8b815f81),
- [c076fe08](https://github.com/angular/angular.js/commit/c076fe08cf47e8af4b5e8845aed917ebb7dbd593),
- [2473412b](https://github.com/angular/angular.js/commit/2473412ba55f7c47f2ca24311312ce95ee11949e),
- [1f2d5000](https://github.com/angular/angular.js/commit/1f2d50000e82630bfce6eb9cf0a8da752fd1e826),
- [5026315d](https://github.com/angular/angular.js/commit/5026315d6f4495d636d86ae2a022fb55cc0ca211),
- [f0a090dd](https://github.com/angular/angular.js/commit/f0a090ddf256d0c144e705c0cdf4216d824140f9),
- [6d9313a6](https://github.com/angular/angular.js/commit/6d9313a68d82654d389c0b2c3e4af148382f14be)) and more!
-
-
-
-
-# 1.0.1 thorium-shielding (2012-06-25)
+This should not break any applications, but you can no longer rely on receiving the
+`ihshprfx` error for paths that have the syntax above. It is actually more similar
+to what currently happens for invalid extra paths anyway: If the base URL
+and hashPrfix are set up as above, then `http://abc.com/base/other/path` does not
+throw an error but just ignores the extra path: `http://abc.com/base`.
-## Bug Fixes
+- **filterFilter:** due to [a75537d4](https://github.com/angular/angular.js/commit/a75537d461c92e3455e372ff5005bf0cad2d2e95),
-- **$location:** don't throw exception while url rewriting if element was removed
- ([3da4194f](https://github.com/angular/angular.js/commit/3da4194f98fa0c1ad1e5ab159719e4b25799e6d4),
- [#1058](https://github.com/angular/angular.js/issues/1058))
-- **$location:** prevent ie from getting into redirect loop
- ([ffb27013](https://github.com/angular/angular.js/commit/ffb270130a4aaf3ddc2eb9d6211b46e1da136184),
- [#1075](https://github.com/angular/angular.js/issues/1075),
- [#1079](https://github.com/angular/angular.js/issues/1079),
- [#1085](https://github.com/angular/angular.js/issues/1085))
+ Named properties in the expression object will only match against properties on the **same level**.
+ Previously, named string properties would match against properties on the same level **or deeper**.
+ Before:
+ ```js
+ arr = filterFilter([{level1: {level2: 'test'}}], {level1: 'test'}); // arr.length -> 1
+ ```
-
-# 1.0.0 temporal-domination (2012-06-13)
+ After:
+ ```js
+ arr = filterFilter([{level1: {level2: 'test'}}], {level1: 'test'}); // arr.length -> 0
+ ```
-## Bug Fixes
+ In order to match deeper nested properties, you have to either match the depth level of the
+ property or use the special `$` key (which still matches properties on the same level
+ **or deeper**). E.g.:
-- **$location:**
- - correctly parse link urls in hashbang mode with a prefix
- ([0f44964e](https://github.com/angular/angular.js/commit/0f44964e5e0f7e37d7fa3216bb10fd61fbf52ae2),
- [#1037](https://github.com/angular/angular.js/issues/1037))
- - fix link click interception in hash-bang mode
- ([6593a3e0](https://github.com/angular/angular.js/commit/6593a3e0823f3c08079f05010f9628fc4503cd43),
- [#1051](https://github.com/angular/angular.js/issues/1051))
+ ```js
+ // Both examples below have `arr.length === 1`
+ arr = filterFilter([{level1: {level2: 'test'}}], {level1: {level2: 'test'}});
+ arr = filterFilter([{level1: {level2: 'test'}}], {$: 'test'});
+ ```
-
-# 1.0.0rc12 regression-extermination (2012-06-12)
+
+# 1.3.5 cybernetic-mercantilism (2014-12-01)
+
## Bug Fixes
-- **$location:** correctly parse link urls in hashbang mode
- ([74fa65ec](https://github.com/angular/angular.js/commit/74fa65ecb7c4e2df966a179952b35700912e065f),
- [#1037](https://github.com/angular/angular.js/issues/1037))
+- **$templateRequest:** propagate rejection reason when ignoreRequestError flag is set
+ ([f6458826](https://github.com/angular/angular.js/commit/f6458826ac974914597a10b0ffdeee3c5d2c62ef),
+ [#10266](https://github.com/angular/angular.js/issues/10266))
+- **$httpBackend:** allow canceling request with falsy timeoutId
+ ([719d5c5f](https://github.com/angular/angular.js/commit/719d5c5fa59ae1617691a0dca02da861fcf5f933),
+ [#10177](https://github.com/angular/angular.js/issues/10177))
+- **linky:** encode all double quotes when serializing email addresses
+ ([2ec8d1ff](https://github.com/angular/angular.js/commit/2ec8d1ffc04e06a39cb1b74a8d675da38e0a1c6b),
+ [#10090](https://github.com/angular/angular.js/issues/10090))
+- **ngMock:**
+ - annotate $RootScopeDecorator
+ ([9a83f9d2](https://github.com/angular/angular.js/commit/9a83f9d2fabe0a259c283b7f7cd935e4b36e2b5d),
+ [#10273](https://github.com/angular/angular.js/issues/10273), [#10275](https://github.com/angular/angular.js/issues/10275), [#10277](https://github.com/angular/angular.js/issues/10277))
+ - respond did not always take a statusText argument
+ ([08cd5c19](https://github.com/angular/angular.js/commit/08cd5c19c7a5116e7e74691391fc5e28bfae4521),
+ [#8270](https://github.com/angular/angular.js/issues/8270))
+- **select:**
+ - use strict compare when removing option from ctrl
+ ([9fa73cb4](https://github.com/angular/angular.js/commit/9fa73cb4e7190b4d00b65f2f8f9f7d37607308ba),
+ [#9714](https://github.com/angular/angular.js/issues/9714), [#10115](https://github.com/angular/angular.js/issues/10115), [#10203](https://github.com/angular/angular.js/issues/10203))
+ - fix several issues when moving options between groups
+ ([30694c80](https://github.com/angular/angular.js/commit/30694c802763d46d6787f7298f47dfef53ed4229),
+ [#10166](https://github.com/angular/angular.js/issues/10166))
+
+
+
+# 1.3.4 highfalutin-petroglyph (2014-11-24)
+## Bug Fixes
-## Cleanup
+- **$browser:** allow chaining url() calls in setter mode
+ ([764fa869](https://github.com/angular/angular.js/commit/764fa869dd8809d494924c23f30ddaa4cac84249),
+ [#10157](https://github.com/angular/angular.js/issues/10157))
+- **$http:** return empty headers, ignore properties in Object prototype
+ ([637c020f](https://github.com/angular/angular.js/commit/637c020f828a7ceeaacf83bb1a54ed3092e6c273),
+ [#7779](https://github.com/angular/angular.js/issues/7779), [#10113](https://github.com/angular/angular.js/issues/10113), [#10091](https://github.com/angular/angular.js/issues/10091))
+- **$locale:** Allow currency filter to fall back to maxFrac from locale
+ ([6dbd606a](https://github.com/angular/angular.js/commit/6dbd606ad7b708d5886c0e7ffee20ae8f8719711),
+ [#10179](https://github.com/angular/angular.js/issues/10179))
+- **$location:** allow empty string URLs to reset path, search, and hash
+ ([7812dfce](https://github.com/angular/angular.js/commit/7812dfcee8ab98cbf38261f9948d9541656bf554),
+ [#10063](https://github.com/angular/angular.js/issues/10063), [#10064](https://github.com/angular/angular.js/issues/10064))
+- **$route:** fix redirection with optional/eager params
+ ([891acf4c](https://github.com/angular/angular.js/commit/891acf4c201823fd2c925ee321c70d06737d5944),
+ [#9819](https://github.com/angular/angular.js/issues/9819), [#9827](https://github.com/angular/angular.js/issues/9827))
+- **Angular:** properly get node name for svg element wrapper
+ ([09a98323](https://github.com/angular/angular.js/commit/09a9832358960c98392c9df1a9fd9592f59bc844),
+ [#10078](https://github.com/angular/angular.js/issues/10078), [#10172](https://github.com/angular/angular.js/issues/10172))
+- **NgModelController:** typo $rawModelValue -> $$rawModelValue
+ ([4f4ff5f3](https://github.com/angular/angular.js/commit/4f4ff5f31b82c6f7be409ea4edbad4c2913ac1f1))
+- **input:**
+ - set ngTrueValue on required checkbox
+ ([8692f87a](https://github.com/angular/angular.js/commit/8692f87a4689fa0dd3640f4dcab5c6b6f960489b),
+ [#5164](https://github.com/angular/angular.js/issues/5164))
+ - call $setTouched in blur asynchronously if necessary
+ ([eab27187](https://github.com/angular/angular.js/commit/eab271876cb87c1f5f6c6f29e814fb8fecad87ff),
+ [#8762](https://github.com/angular/angular.js/issues/8762), [#9808](https://github.com/angular/angular.js/issues/9808), [#10014](https://github.com/angular/angular.js/issues/10014))
+- **input[date]:** do not use `$isEmpty` to check the model validity
+ ([40406e2f](https://github.com/angular/angular.js/commit/40406e2f22713efbd37ef3eff408339727cb62d9))
+- **linky:** encode double quotes when serializing email addresses
+ ([8ee8ffeb](https://github.com/angular/angular.js/commit/8ee8ffeba0a5a133fa792745c1019d294ecfcef3),
+ [#8945](https://github.com/angular/angular.js/issues/8945), [#8964](https://github.com/angular/angular.js/issues/8964), [#5946](https://github.com/angular/angular.js/issues/5946), [#10090](https://github.com/angular/angular.js/issues/10090), [#9256](https://github.com/angular/angular.js/issues/9256))
+- **ngMaxlength:** ignore maxlength when not set to a non-negative integer
+ ([92f87b11](https://github.com/angular/angular.js/commit/92f87b114242b01876e1dc5c6fddd061352ecb2c),
+ [#9874](https://github.com/angular/angular.js/issues/9874))
+- **ngModel:** don't run parsers when executing $validate
+ ([e3764e30](https://github.com/angular/angular.js/commit/e3764e30a301ec6136c8e6b5493d39feb3cd1ecc))
+- **ngModelOptions:** preserve context of getter/setters
+ ([bb4d3b73](https://github.com/angular/angular.js/commit/bb4d3b73a1ccf3dee55b0c25baf031bae5cbb676),
+ [#9394](https://github.com/angular/angular.js/issues/9394), [#9865](https://github.com/angular/angular.js/issues/9865))
-- **$defer:** remove deprecated `$defer` service
- ([9af7a919](https://github.com/angular/angular.js/commit/9af7a9198e2d30608ea6c40eedde03e44a6ef569))
-- **docs:** simplify api urls
- ([f16150d5](https://github.com/angular/angular.js/commit/f16150d5f1b20b3d633b4402095ea89baa4be042))
+## Features
+- **ngMaxlength:** add support for disabling max length limit
+ ([5c1fdff6](https://github.com/angular/angular.js/commit/5c1fdff691b9367d73f72f6a0298cb6a6e259f35),
+ [#9995](https://github.com/angular/angular.js/issues/9995))
+- **ngModelController:** add $setDirty method
+ ([e8941c0f](https://github.com/angular/angular.js/commit/e8941c0fe5217d2e705bad8253dc0162aff4c709),
+ [#10038](https://github.com/angular/angular.js/issues/10038), [#10049](https://github.com/angular/angular.js/issues/10049))
+- **ngPluralize:** add support for `count` to be a one-time expression
+ ([2b41a586](https://github.com/angular/angular.js/commit/2b41a5868aee79e3872ad92db66e30959207d98e),
+ [#10004](https://github.com/angular/angular.js/issues/10004))
-
-# 1.0.0rc11 promise-resolution (2012-06-10)
-## Features
+## Performance Improvements
-- **$route:**
- - allow defining route async dependencies as promises and defer route change until all promises
- are resolved
- ([885fb0dd](https://github.com/angular/angular.js/commit/885fb0dd0743859a8985c23e4d0c1855a2be711e))
- - rename template -> tempalteUrl and add support for inline templates
- ([0a6e464a](https://github.com/angular/angular.js/commit/0a6e464a93d9a1e76a624b356054ce9ca4015f55))
-- **$compile:** simplify isolate scope bindings and introduce true two-way data-binding between
- parent scope and isolate scope
- ([c3a41ff9](https://github.com/angular/angular.js/commit/c3a41ff9fefe894663c4d4f40a83794521deb14f))
-- **$injector:** provide API for retrieving function annotations
- ([4361efb0](https://github.com/angular/angular.js/commit/4361efb03b79e71bf0cea92b94ff377ed718bad4))
-- **$location:** add $locatonChange[start|success] event - since events are cancelable, it's now
- possible to cancel route and location changes.
- ([92a2e180](https://github.com/angular/angular.js/commit/92a2e1807657c69e1372106b0727675a30f4cbd7))
-- **$rootElement:** expose application root element as $rootElement service
- ([85632cb4](https://github.com/angular/angular.js/commit/85632cb44c95617d73c369f3a03fb476a4d5c8a2))
+- use Object.create instead of creating temporary constructors
+ ([bf6a79c3](https://github.com/angular/angular.js/commit/bf6a79c3484f474c300b5442ae73483030ef5782),
+ [#10058](https://github.com/angular/angular.js/issues/10058))
-## Bug Fixes
+## Breaking Changes
-- **$compile:** correctly merge class attr for replace directives (contributed by Max Martinsson,
- [fb99b539](https://github.com/angular/angular.js/commit/fb99b539b4d851773b43f1564f7032adb157c0db),
- [#1006](https://github.com/angular/angular.js/issues/1006))
-- **$http:** add utf-8 to default Content-Type header (post/put)
- ([10f80d7d](https://github.com/angular/angular.js/commit/10f80d7d2918f98262090b425ecc294d9518aa7e))
-- **$timeout:** allow calling $timeout.cancel() with undefined (contributed by Ali Mills,
- [1904596e](https://github.com/angular/angular.js/commit/1904596e0c2330299e92f092bd7a6ceca8e97c30))
-- **jqLite:** don't eat event exceptions
- ([416a7830](https://github.com/angular/angular.js/commit/416a7830403a579cc57cf3a0198193790dcd0bc6))
+- **ngModelOptions:** due to [bb4d3b73](https://github.com/angular/angular.js/commit/bb4d3b73a1ccf3dee55b0c25baf031bae5cbb676),
+ previously, ngModel invoked getter/setters in the global context.
+For example:
-## Breaking Changes
+```js
+
+```
-- **$beforeRouteChange and $afterRouteChange events were renamed to $routeChangeStart and
- $routeChangeSuccess**
+would previously invoke `model.value()` in the global context.
- This was done to make the naming consistent with $location events and also get events to
- categorize and order nicely just by alphabetical sorting.
+Now, ngModel invokes `value` with `model` as the context.
- ([7c242821](https://github.com/angular/angular.js/commit/7c2428218893f59c6a4499667488009ca67f3385))
+It's unlikely that real apps relied on this behavior. If they did they can use `.bind` to explicilty
+bind a getter/getter to the global context, or just reference globals normally without `this`.
-- **`template` option in $route definition was renamed to `templateUrl`**
- The `template` options in $route definition now represents the actual template string. To provide
- the template url use `templateUrl` option instead. This was done to unify the directive and $route
- definitions.
+
+# 1.3.3 undersea-arithmetic (2014-11-17)
- To migrate just rename `template` to `templateUrl`.
- ([0a6e464a](https://github.com/angular/angular.js/commit/0a6e464a93d9a1e76a624b356054ce9ca4015f55))
+## Bug Fixes
-- **isolate scope bindings definition has changed**
+- **$http:** don't parse single space responses as JSON
+ ([6f19a6fd](https://github.com/angular/angular.js/commit/6f19a6fd33ab72d3908e3418fba47ee8e1598fa6),
+ [#9907](https://github.com/angular/angular.js/issues/9907))
+- **minErr:** stringify non-JSON compatible objects in error messages
+ ([cf43ccdf](https://github.com/angular/angular.js/commit/cf43ccdf9b8665a2fd5d6aa52f80cb2d7c9bb7e2),
+ [#10085](https://github.com/angular/angular.js/issues/10085))
+- **$rootScope:** handle cyclic references in scopes when creating error messages
+ ([e80053d9](https://github.com/angular/angular.js/commit/e80053d91fd7c722e092a23d326384de2e552eb6),
+ [#10085](https://github.com/angular/angular.js/issues/10085))
+- **ngRepeat:** support cyclic object references in error messages
+ ([fa12c3c8](https://github.com/angular/angular.js/commit/fa12c3c86af7965d1b9d9a5dd3434755e9e04635),
+ [#9838](https://github.com/angular/angular.js/issues/9838), [#10065](https://github.com/angular/angular.js/issues/10065), [#10085](https://github.com/angular/angular.js/issues/10085))
+- **ngMock:** call $interval callbacks even when invokeApply is false
+ ([d81ff888](https://github.com/angular/angular.js/commit/d81ff8885b77f70c6417d7be3124d86d07447375),
+ [#10032](https://github.com/angular/angular.js/issues/10032))
+- **ngPattern:** match behaviour of native HTML pattern attribute
+ ([85eb9660](https://github.com/angular/angular.js/commit/85eb9660ef67c24d5104a6a1921bedad0bd1b57e),
+ [#9881](https://github.com/angular/angular.js/issues/9881), [#9888](https://github.com/angular/angular.js/issues/9888))
+- **select:** ensure the label attribute is updated in Internet Explorer
+ ([6604c236](https://github.com/angular/angular.js/commit/6604c2361427fba8c43a39dc2e92197390dfbdbe),
+ [#9621](https://github.com/angular/angular.js/issues/9621), [#10042](https://github.com/angular/angular.js/issues/10042))
- To migrate the code follow the example below:
- Before:
+## Features
- scope: {
- myAttr: 'attribute',
- myBind: 'bind',
- myExpression: 'expression',
- myEval: 'evaluate',
- myAccessor: 'accessor'
- }
+- **$location:** allow to location to be changed during $locationChangeStart
+ ([a9352c19](https://github.com/angular/angular.js/commit/a9352c19ce33f0393d6581547c7ea8dfc2a8b78f),
+ [#9607](https://github.com/angular/angular.js/issues/9607), [#9678](https://github.com/angular/angular.js/issues/9678))
+- **$routeProvider:** allow setting caseInsensitiveMatch on the provider
+ ([0db573b7](https://github.com/angular/angular.js/commit/0db573b7493f76abd94ff65ce660017d617e865b),
+ [#6477](https://github.com/angular/angular.js/issues/6477), [#9873](https://github.com/angular/angular.js/issues/9873))
- After:
- scope: {
- myAttr: '@',
- myBind: '@',
- myExpression: '&',
- // myEval - usually not useful, but in cases where the expression is assignable, you can use '='
- myAccessor: '=' // in directive's template change myAccessor() to myAccessor
- }
+## Performance Improvements
+- **orderBy:** copy array with slice instead of for loop
+ ([8eabc546](https://github.com/angular/angular.js/commit/8eabc5463c795d87f37e5a9eacbbb14435024061),
+ [#9942](https://github.com/angular/angular.js/issues/9942))
-- **the inject option for the directive controller injection was removed**
+## Breaking Changes
- The removed `inject` wasn't generally useful for directives so there should be no code using it.
- ([c3a41ff9](https://github.com/angular/angular.js/commit/c3a41ff9fefe894663c4d4f40a83794521deb14f))
+- **$parse:** due to [fbad2805](https://github.com/angular/angular.js/commit/fbad2805703569058a4a860747b0e2d8aee36bdf),
+ you can't use characters that have special meaning in AngularJS expressions (ex.: `.` or `-`)
+ as part of filter's name. Before this commit custom filters could contain special characters
+ (like a dot) in their name but this wasn't intentional.
+
+# 1.3.2 cardiovasculatory-magnification (2014-11-07)
-
-# 1.0.0rc10 tesseract-giftwrapping (2012-05-23)
+## Bug Fixes
+
+- **$compile:** do not rebind parent bound transclude functions
+ ([841c0907](https://github.com/angular/angular.js/commit/841c0907556f525dbc4223609d808319fe0dd7e2),
+ [#9413](https://github.com/angular/angular.js/issues/9413))
+- **$parse:**
+ - stateful interceptors override an `undefined` expression
+ ([ed99821e](https://github.com/angular/angular.js/commit/ed99821e4dc621864f7e2d9a6b5305fca27fb7fa),
+ [#9821](https://github.com/angular/angular.js/issues/9821), [#9825](https://github.com/angular/angular.js/issues/9825))
+ - add quick check for Function constructor in fast path
+ ([e676d642](https://github.com/angular/angular.js/commit/e676d642f5feb8d3ba88944634afb479ba525c36))
+- **$parse, events:** prevent accidental misuse of properties on $event
+ ([e057a9aa](https://github.com/angular/angular.js/commit/e057a9aa398ead209bd6bbf76e22d2d5562904fb))
+- **ngRoute:** allow proto inherited properties in route params object
+ ([b4770582](https://github.com/angular/angular.js/commit/b4770582f84f26c8ff7f2320a36a6b0ceff6e6cc),
+ [#8181](https://github.com/angular/angular.js/issues/8181), [#9731](https://github.com/angular/angular.js/issues/9731))
+- **select:** use strict comparison for isSelected with selectAs
+ ([9e305948](https://github.com/angular/angular.js/commit/9e305948e4965fb86b0c79985dc6e8c59a9c66af),
+ [#9639](https://github.com/angular/angular.js/issues/9639), [#9949](https://github.com/angular/angular.js/issues/9949))
+
## Features
-- **$timeout:** add `$timeout` service that supersedes `$defer`
- ([4511d39c](https://github.com/angular/angular.js/commit/4511d39cc748288df70bdc258f98a8f36652e683),
- [#704](https://github.com/angular/angular.js/issues/704),
- [#532](https://github.com/angular/angular.js/issues/532))
-- **scope:** add `event.preventDefault()` and `event.defaultPrevented`
- ([84542d24](https://github.com/angular/angular.js/commit/84542d2431d20de42d6ec27c9d3435dd72dbe2ee))
+- **ngAria:** announce ngMessages with aria-live
+ ([187e4318](https://github.com/angular/angular.js/commit/187e43185dfb1bce6a318d95958c73cfb789d33c),
+ [#9834](https://github.com/angular/angular.js/issues/9834))
+- **ngMock:** decorator that adds Scope#$countChildScopes and Scope#$countWatchers
+ ([74981c9f](https://github.com/angular/angular.js/commit/74981c9f208b3617cbf00beafd61138d25c5d546),
+ [#9926](https://github.com/angular/angular.js/issues/9926), [#9871](https://github.com/angular/angular.js/issues/9871))
-## Bug Fixes
+## Security Note
-- **ngRepeat:** expose `$first`, `$middle` and `$last` instead of `$position`
- ([1d388676](https://github.com/angular/angular.js/commit/1d388676e3b97b6171fc498e82545bd437ee6fd1),
- [#912](https://github.com/angular/angular.js/issues/912))
-- **jqLite:** use the same expando store structure as jQuery
- ([acf095d1](https://github.com/angular/angular.js/commit/acf095d1783e30e750d046ef24e81b5a0a31fbd4))
-- **$rootScope:** infinite digest exception does not clear $$phase
- ([5989a1ed](https://github.com/angular/angular.js/commit/5989a1eda2b9e289b467ef9741fb1476549c8fd9),
- [#979](https://github.com/angular/angular.js/issues/979))
+This release also contains security fixes for expression sandbox bypasses.
+These issues affect only applications with known server-side XSS holes that are also using [CSP](https://developer.mozilla.org/en-US/docs/Web/Security/CSP) to secure their client-side code. If your application falls into this rare category, we recommend updating your version of Angular.
-## Breaking Changes
+We'd like to thank security researches [Sebastian Lekies](https://twitter.com/sebastianlekies), [Jann Horn](http://thejh.net/), and [Gábor Molnár](https://twitter.com/molnar_g) for reporting these issues to us.
-- **ngRepeat - `$position` is not exposed in repeater scopes any more**
+We also added a documentation page focused on security, which contains some of the best practices, DOs and DON'Ts. Please check out [https://docs.angularjs.org/guide/security](https://docs.angularjs.org/guide/security).
- To update, search for `/\$position/` and replace it with one of `$first`, `$middle` or `$last`.
- ([1d388676](https://github.com/angular/angular.js/commit/1d388676e3b97b6171fc498e82545bd437ee6fd1))
-- **scope event's `cancel` method was renamed to `stopPropagation`**
- The name was corrected in order to align better with DOM terminology.
- To update, search for `/\.\s*cancel\s*(/` and replace it with `.stopPropagation(` or
- `.preventDefault(` (or both) depending on what you actually need.
- ([91db9920](https://github.com/angular/angular.js/commit/91db99208e197a73584a88a8d835eeb55c466335))
+
+# 1.3.1 spectral-lobster (2014-10-31)
-## Deprecation Warnings
+## Bug Fixes
-- **`$defer` service has been deprecated in favor of `$timeout` service**
+- **$compile:** returning null when an optional controller is not found
+ ([2cd5b4ec](https://github.com/angular/angular.js/commit/2cd5b4ec4409a818ccd33a6fbdeb99a3443a1809),
+ [#9404](https://github.com/angular/angular.js/issues/9404), [#9392](https://github.com/angular/angular.js/issues/9392))
+- **$observe:** check if the attribute is undefined
+ ([531a8de7](https://github.com/angular/angular.js/commit/531a8de72c439d8ddd064874bf364c00cedabb11),
+ [#9707](https://github.com/angular/angular.js/issues/9707), [#9720](https://github.com/angular/angular.js/issues/9720))
+- **$parse:** support dirty-checking objects with null prototype
+ ([28661d1a](https://github.com/angular/angular.js/commit/28661d1a8cc3a8454bad7ae531e027b1256476c9),
+ [#9568](https://github.com/angular/angular.js/issues/9568))
+- **$sce:** use msie instead of $document[0].documentMode
+ ([45252c3a](https://github.com/angular/angular.js/commit/45252c3a545336a0bac93be6ee28cde6afaa3cb4),
+ [#9661](https://github.com/angular/angular.js/issues/9661))
+- **$templateRequest:** ignore JSON Content-Type header and content
+ ([1bd473eb](https://github.com/angular/angular.js/commit/1bd473eb4587900086e0b6b308dcf1dcfe9760d9),
+ [#5756](https://github.com/angular/angular.js/issues/5756), [#9619](https://github.com/angular/angular.js/issues/9619))
+- **i18n:** rename datetimeSymbols to be camelCase
+ ([94f5a285](https://github.com/angular/angular.js/commit/94f5a285bfcf04d800afc462a7a37a3469d77f1a))
+- **loader:** fix double spaces
+ ([8b2f1a47](https://github.com/angular/angular.js/commit/8b2f1a47b584ceb98689f48538a2af73cd65dfd8),
+ [#9630](https://github.com/angular/angular.js/issues/9630))
+- **ngMock:** $httpBackend should match data containing Date objects correctly
+ ([1025f6eb](https://github.com/angular/angular.js/commit/1025f6ebf4e5933a12920889be00cd8ac8a106fa),
+ [#5127](https://github.com/angular/angular.js/issues/5127))
+- **ngSanitize:** attribute name: xmlns:href -> xlink:href
+ ([4cccf0f2](https://github.com/angular/angular.js/commit/4cccf0f2a89b002d63cb443e1e7b15f76dcef425),
+ [#9769](https://github.com/angular/angular.js/issues/9769))
+- **select:** assign result of track exp to element value
+ ([4b4098bf](https://github.com/angular/angular.js/commit/4b4098bfcae64f69c70a22393de1f3d9a0d3dc46),
+ [#9718](https://github.com/angular/angular.js/issues/9718), [#9592](https://github.com/angular/angular.js/issues/9592))
+- **templateRequest:** allow empty html template
+ ([52ceec22](https://github.com/angular/angular.js/commit/52ceec2229dc132b76da4e022c91474344f2d906),
+ [#9581](https://github.com/angular/angular.js/issues/9581))
+- **testability:** escape regex chars in `findBindings` if using `exactMatch`
+ ([02aa4f4b](https://github.com/angular/angular.js/commit/02aa4f4b85ee15922a1f2de8ba78f562c18518d0),
+ [#9595](https://github.com/angular/angular.js/issues/9595), [#9600](https://github.com/angular/angular.js/issues/9600))
- The `$defer` service will be removed before 1.0 final, so please migrate your code.
- ([4511d39c](https://github.com/angular/angular.js/commit/4511d39cc748288df70bdc258f98a8f36652e683))
+## Features
+- **$compile:** allow $watchCollection to be used in bi-directional bindings
+ ([40bbc981](https://github.com/angular/angular.js/commit/40bbc9817845bf75581daee5d0ec30980affb0f5),
+ [#9725](https://github.com/angular/angular.js/issues/9725))
+- **ngSanitize:** accept SVG elements and attributes
+ ([a54b25d7](https://github.com/angular/angular.js/commit/a54b25d77999a85701dfc5396fef78e586a99667),
+ [#9578](https://github.com/angular/angular.js/issues/9578), [#9751](https://github.com/angular/angular.js/issues/9751))
-
-# 1.0.0rc9 eggplant-teleportation (2012-05-14)
-## Bug Fixes
+
+# 1.3.0 superluminal-nudge (2014-10-13)
-- **$location:**
- - single quote in url causes infinite digest in FF
- ([679cb8a7](https://github.com/angular/angular.js/commit/679cb8a74a684454fe38fa9e1ddad396bb598c52),
- [#920](https://github.com/angular/angular.js/issues/920))
- - support urls with any protocol
- ([c1533ef5](https://github.com/angular/angular.js/commit/c1533ef5762199bea18d3bf3bcba7fcf89272931))
- - don't use buggy history.pushState api on Android < 4
- ([7b739c97](https://github.com/angular/angular.js/commit/7b739c97028be2a5d5aef679ef1f8064cd10d386),
- [#904](https://github.com/angular/angular.js/issues/904))
- - work around Opera's base href issue
- ([b99f65f6](https://github.com/angular/angular.js/commit/b99f65f64d1e54315b3210d78a9a9adbcf34c96c),
- [#938](https://github.com/angular/angular.js/issues/938))
-- **docs app:** get docs app to work on IE8
- ([aa025348](https://github.com/angular/angular.js/commit/aa02534865c8e43dcef9e218b12c8c717c837205))
+## Bug Fixes
+- **$browser:**
+ - account for IE deserializing history.state on each read
+ ([1efaf3dc](https://github.com/angular/angular.js/commit/1efaf3dc136f822703a9cda55afac7895a923ccb),
+ [#9587](https://github.com/angular/angular.js/issues/9587), [#9545](https://github.com/angular/angular.js/issues/9545))
+ - do not decode cookies that do not appear encoded
+ ([9c995905](https://github.com/angular/angular.js/commit/9c9959059eb84f0f1d748b70b50ec47b7d23d065),
+ [#9211](https://github.com/angular/angular.js/issues/9211), [#9225](https://github.com/angular/angular.js/issues/9225))
+- **$http:**
+ - allow empty json response
+ ([9ba24c54](https://github.com/angular/angular.js/commit/9ba24c54d60e643b1450cc5cfa8f990bd524c130),
+ [#9532](https://github.com/angular/angular.js/issues/9532), [#9562](https://github.com/angular/angular.js/issues/9562))
+ - don't run transformData on HEAD methods
+ ([6e4955a3](https://github.com/angular/angular.js/commit/6e4955a3086555d8ca30c29955faa213b39c6f27),
+ [#9528](https://github.com/angular/angular.js/issues/9528), [#9529](https://github.com/angular/angular.js/issues/9529))
+- **$injector:** ensure $get method invoked with provider context
+ ([372fa699](https://github.com/angular/angular.js/commit/372fa6993b2b1b4848aa4be3c3e11f69244fca6f),
+ [#9511](https://github.com/angular/angular.js/issues/9511), [#9512](https://github.com/angular/angular.js/issues/9512))
+- **$location:** use clone of passed search() object
+ ([c7a9009e](https://github.com/angular/angular.js/commit/c7a9009e143299f0e45a85d715ff22fc676d3f93),
+ [#9445](https://github.com/angular/angular.js/issues/9445))
+- **$parse:** stabilize one-time literal expressions correctly
+ ([874cac82](https://github.com/angular/angular.js/commit/874cac825bf29a936cb1b35f9af239687bc5e036))
+- **formController:** remove scope reference when form is destroyed
+ ([01f50e1a](https://github.com/angular/angular.js/commit/01f50e1a7b2bff7070616494774ec493f8133204),
+ [#9315](https://github.com/angular/angular.js/issues/9315))
+- **jqLite:** remove native listener when all jqLite listeners were deregistered
+ ([d71fb6f2](https://github.com/angular/angular.js/commit/d71fb6f2713f1a636f6e9c25479870ee9941ad18),
+ [#9509](https://github.com/angular/angular.js/issues/9509))
+- **select:**
+ - add basic track by and select as support
+ ([addfff3c](https://github.com/angular/angular.js/commit/addfff3c46311f59bdcd100351260006d457316f),
+ [#6564](https://github.com/angular/angular.js/issues/6564))
+ - manage select controller options correctly
+ ([2435e2b8](https://github.com/angular/angular.js/commit/2435e2b8f84fde9495b8e9440a2b4f865b1ff541),
+ [#9418](https://github.com/angular/angular.js/issues/9418))
-
-# 1.0.0rc8 blooming-touch (2012-05-06)
## Features
-- **jqLite:** support data() getter and data(obj) setter
- ([ee579a07](https://github.com/angular/angular.js/commit/ee579a071a91cbade729d3cb97e097568e71f8fc))
+- **$anchorScroll:** support a configurable vertical scroll offset
+ ([09c39d2c](https://github.com/angular/angular.js/commit/09c39d2ce687cdf0ac35dbb34a91f0d198c9d83a),
+ [#9368](https://github.com/angular/angular.js/issues/9368), [#2070](https://github.com/angular/angular.js/issues/2070), [#9360](https://github.com/angular/angular.js/issues/9360))
+- **$animate:**
+ - introduce the $animate.animate() method
+ ([02be700b](https://github.com/angular/angular.js/commit/02be700bda191b454de393f2805916f374a1d764))
+ - allow $animate to pass custom styles into animations
+ ([e5f4d7b1](https://github.com/angular/angular.js/commit/e5f4d7b10ae5e6a17ab349995451c33b7d294245))
+- **currencyFilter:** add fractionSize as optional parameter
+ ([20685ffe](https://github.com/angular/angular.js/commit/20685ffe11036d4d604d13f0d792ca46497af4a1),
+ [#3642](https://github.com/angular/angular.js/issues/3642), [#3461](https://github.com/angular/angular.js/issues/3461), [#3642](https://github.com/angular/angular.js/issues/3642), [#7922](https://github.com/angular/angular.js/issues/7922))
+- **jqLite:** add private jqLiteDocumentLoaded function
+ ([0dd316ef](https://github.com/angular/angular.js/commit/0dd316efea209e5e5de3e456b4e6562f011a1294))
+
+
+## Breaking Changes
+
+- **$animate:** due to [e5f4d7b1](https://github.com/angular/angular.js/commit/e5f4d7b10ae5e6a17ab349995451c33b7d294245),
+ staggering animations that use transitions will now
+always block the transition from starting (via `transition: 0s none`)
+up until the stagger step kicks in. The former behaviour was that the
+block was removed as soon as the pending class was added. This fix
+allows for styles to be applied in the pending class without causing
+an animation to trigger prematurely.
+
+
+
+
+# 1.3.0-rc.5 impossible-choreography (2014-10-08)
## Bug Fixes
+- **$anchorScroll:** don't scroll to top when initializing and location hash is empty
+ ([d5445c60](https://github.com/angular/angular.js/commit/d5445c601fafd6ecd38befeaa4c9ec7bb044127c),
+ [#8848](https://github.com/angular/angular.js/issues/8848), [#9393](https://github.com/angular/angular.js/issues/9393))
+- **$animate:**
+ - ensure hidden elements with ngShow/ngHide stay hidden during animations
+ ([39d0b368](https://github.com/angular/angular.js/commit/39d0b36826a077f7549a70d0cf3edebe90a10aaa),
+ [#9103](https://github.com/angular/angular.js/issues/9103), [#9493](https://github.com/angular/angular.js/issues/9493))
+ - permit class-based animations for leave operations if ngAnimateChildren is enabled
+ ([df1a00b1](https://github.com/angular/angular.js/commit/df1a00b11ac2722f4da441837795985f12682030),
+ [#8092](https://github.com/angular/angular.js/issues/8092), [#9491](https://github.com/angular/angular.js/issues/9491))
+ - ensure that class-based animations only consider the most recent DOM operations
+ ([c93924ed](https://github.com/angular/angular.js/commit/c93924ed275a62683b85c82f1c6c2e19d5662c9a),
+ [#8946](https://github.com/angular/angular.js/issues/8946), [#9458](https://github.com/angular/angular.js/issues/9458))
+ - abort class-based animations if the element is removed during digest
+ ([613d0a32](https://github.com/angular/angular.js/commit/613d0a3212de8dc01c817ca8526e09c57978a621),
+ [#8796](https://github.com/angular/angular.js/issues/8796))
+ - clear the GCS cache even when no animation is detected
+ ([cb85cbce](https://github.com/angular/angular.js/commit/cb85cbcec1c876db6062a0dc0bad80f842782194),
+ [#8813](https://github.com/angular/angular.js/issues/8813))
+- **$browser:**
+ - Cache `location.href` only during page reload phase
+ ([8ee1ba4b](https://github.com/angular/angular.js/commit/8ee1ba4b94d6fccff06d8781f7ed256c6ce664ff),
+ [#9235](https://github.com/angular/angular.js/issues/9235), [#9455](https://github.com/angular/angular.js/issues/9455))
+ - don’t use the history API when only the hash changes
+ ([7cb01a80](https://github.com/angular/angular.js/commit/7cb01a80beec669d8f6aae1dc211d2f0b7d4eac4),
+ [#9423](https://github.com/angular/angular.js/issues/9423), [#9424](https://github.com/angular/angular.js/issues/9424),
+ [858360b6](https://github.com/angular/angular.js/commit/858360b680a2bb5c19429c1be1c9506700cda476),
+ [0656484d](https://github.com/angular/angular.js/commit/0656484d3e709c5162570b0dd6473b0b6140e5b2),
+ [#9143](https://github.com/angular/angular.js/issues/9143), [#9406](https://github.com/angular/angular.js/issues/9406))
+ - handle async href on url change in <=IE9
+ ([404b95fe](https://github.com/angular/angular.js/commit/404b95fe30a1bcd1313adafbd0018578d5b21d3d),
+ [#9235](https://github.com/angular/angular.js/issues/9235))
- **$compile:**
- - have $observe return registration function
- ([7f0eb151](https://github.com/angular/angular.js/commit/7f0eb1516165fcb73f1c9953018b7c9b70acfae1))
- - ignore ws when checking if template has single root
- ([9c0418cf](https://github.com/angular/angular.js/commit/9c0418cf1abd609bf0ffbe71fbdfa75905cf8e0f),
- [#910](https://github.com/angular/angular.js/issues/910))
- - fix replaceWith
- ([b431ee38](https://github.com/angular/angular.js/commit/b431ee38509724ba9098a7be7a8d6c5dcded4fe9))
- - attach scope to the directive element when templateUrl and replace=true
- ([705f4bbf](https://github.com/angular/angular.js/commit/705f4bbf115d2408e33b25f56edbf1f383aabb82))
- - prevent duplicate directive controller instantiation
- ([843f762c](https://github.com/angular/angular.js/commit/843f762c573e38a044f920c5575c6feb46bc7226),
- [#876](https://github.com/angular/angular.js/issues/876))
-- **$parse:** support methods on falsy primitive types
- ([499a76a0](https://github.com/angular/angular.js/commit/499a76a08cc7a7604dab5e1dd9cca675b8e29333))
-- **ngModel:** use keydown/change events on IE9 instead of input
- ([49dfdf8f](https://github.com/angular/angular.js/commit/49dfdf8f0238ef8c473fcb44694f6b5696ecde70),
- [#879](https://github.com/angular/angular.js/issues/879))
-- **ngSrc,ngHref:** binding should set element prop as well as attr
- ([b24cc63b](https://github.com/angular/angular.js/commit/b24cc63bcbd45741d21757653f05d54db09e0f20),
- [#935](https://github.com/angular/angular.js/issues/935))
-- **scenario:** make browser().location() working if ng-app on other than
- ([5bcb749a](https://github.com/angular/angular.js/commit/5bcb749abb91dba0847cb9bc900777a67fd55aa8))
-- **select:** don't interfere with selection if not databound
- ([3bd3cc57](https://github.com/angular/angular.js/commit/3bd3cc571dcd721f9d71f971aefee23115a5e458),
- [#926](https://github.com/angular/angular.js/issues/926))
-
-
-## Docs
-
-- Brand new bootstrap-based skin for api docs:
-
-
-
-# 1.0.0rc7 rc-generation (2012-04-30)
+ - handle the removal of an interpolated attribute
+ ([a75546af](https://github.com/angular/angular.js/commit/a75546afdf41adab786eda30c258190cd4c5f1ae),
+ [#9236](https://github.com/angular/angular.js/issues/9236), [#9240](https://github.com/angular/angular.js/issues/9240))
+ - remove comment nodes from templates before asserting single root node
+ ([feba0174](https://github.com/angular/angular.js/commit/feba0174db0f8f929273beb8b90691734a9292e2),
+ [#9212](https://github.com/angular/angular.js/issues/9212), [#9215](https://github.com/angular/angular.js/issues/9215))
+ - use the correct namespace for transcluded svg elements
+ ([f3539f3c](https://github.com/angular/angular.js/commit/f3539f3cb5d9477f50f065c6a0ac7d6ca0a31092),
+ [#9344](https://github.com/angular/angular.js/issues/9344), [#9415](https://github.com/angular/angular.js/issues/9415))
+- **$http:** honor application/json response header and parse json primitives
+ ([7b6c1d08](https://github.com/angular/angular.js/commit/7b6c1d08aceba6704a40302f373400aed9ed0e0b),
+ [#2973](https://github.com/angular/angular.js/issues/2973))
+- **$injector:** throw when factory $get method does not return a value
+ ([0d3b69a5](https://github.com/angular/angular.js/commit/0d3b69a5f27b41745b504c7ffd8d72653bac1f85),
+ [#4575](https://github.com/angular/angular.js/issues/4575), [#9210](https://github.com/angular/angular.js/issues/9210))
+- **$location:** allow `0` in `path()` and `hash()`
+ ([b8c5b871](https://github.com/angular/angular.js/commit/b8c5b87119a06edb8e8d1cefad81ee8d1f64f070))
+- **form:** fix submit prevention
+ ([86c7d122](https://github.com/angular/angular.js/commit/86c7d1221c706993044583d51a0c61423fee5bcf),
+ [#3370](https://github.com/angular/angular.js/issues/3370), [#3776](https://github.com/angular/angular.js/issues/3776))
+- **ngAnimate:** defer DOM operations for changing classes to postDigest
+ ([667183a8](https://github.com/angular/angular.js/commit/667183a8c79d6ffce571a2be78c05dc76503b222),
+ [#8234](https://github.com/angular/angular.js/issues/8234), [#9263](https://github.com/angular/angular.js/issues/9263))
+- **orderBy:** sort by identity if no predicate is given
+ ([607f016a](https://github.com/angular/angular.js/commit/607f016a0ba705ce40df0164360fb96a9d7f5912),
+ [#5847](https://github.com/angular/angular.js/issues/5847), [#4579](https://github.com/angular/angular.js/issues/4579), [#9403](https://github.com/angular/angular.js/issues/9403))
+- **select:**
+ - throw for `selectAs` and `trackBy`
+ ([30996f82](https://github.com/angular/angular.js/commit/30996f82afa03cd11771b3267e9367ecf9af6e6d))
+ - use `$viewValue` instead of `$modelValue`
+ ([f7174169](https://github.com/angular/angular.js/commit/f7174169f4f710d605f6a67f39f90a67a07d4cab),
+ [#8929](https://github.com/angular/angular.js/issues/8929))
+
## Features
-- **$parse:** CSP compatibility
- ([2b87c814](https://github.com/angular/angular.js/commit/2b87c814ab70eaaff6359ce1a118f348c8bd2197),
- [#893](https://github.com/angular/angular.js/issues/893))
+- **$location:**
+ - add support for History API state handling ([6fd36dee](https://github.com/angular/angular.js/commit/6fd36deed954b338e48390862971d465148dc1f2),
+ [#9027](https://github.com/angular/angular.js/issues/9027))
+ - allow automatic rewriting of links to be disabled
+ ([b3e09be5](https://github.com/angular/angular.js/commit/b3e09be58960b913fee3869bf36e7de3305bbe00),
+ [#5487](https://github.com/angular/angular.js/issues/5487))
+- **$route:** ability to cancel $routeChangeStart event
+ ([f4ff11b0](https://github.com/angular/angular.js/commit/f4ff11b01e6a5f9a9eb25a38d327dfaadbd7c80c),
+ [#5581](https://github.com/angular/angular.js/issues/5581), [#5714](https://github.com/angular/angular.js/issues/5714), [#9502](https://github.com/angular/angular.js/issues/9502))
+
+## Performance Improvements
+
+- **$animate:**
+ - access DOM less in resolveElementClasses
+ ([22358cf9](https://github.com/angular/angular.js/commit/22358cf9c703d67f3cf9eb4899404b09578a5fad))
+ - don't join classes before it's necessary in resolveElementClasses
+ ([003c44ec](https://github.com/angular/angular.js/commit/003c44eceee54c3398b0d2971fd97a512d7f7cec))
+- **ngBind:** set textContent rather than using element.text()
+ ([074a146d](https://github.com/angular/angular.js/commit/074a146d8b1ee7c93bf6d5892448a5c2a0143a28),
+ [#9369](https://github.com/angular/angular.js/issues/9369), [#9396](https://github.com/angular/angular.js/issues/9396))
-## Bug Fixes
+## Breaking Changes
-- **jqlite:**
- - correctly reset event properties in IE8
- ([a18926f9](https://github.com/angular/angular.js/commit/a18926f986166048a21097636f03ab29f107b154))
- - mouseenter on FF no longer throws exceptions
- ([43d15f83](https://github.com/angular/angular.js/commit/43d15f830f9d419c41c41f0682e47e86839e3917))
+- **$compile:** due to [feba0174](https://github.com/angular/angular.js/commit/feba0174db0f8f929273beb8b90691734a9292e2),
-## Docs
+If a template contains directives within comment nodes, and there is more than a single node in the
+template, those comment nodes are removed. The impact of this breaking change is expected to be
+quite low.
-- Tutorial has been finally updated to AngularJS v1.0! Check it out and provide feedback to make it
- even better:
-- now redirects to
+Closes #9212
+Closes #9215
+- **ngAnimate:** due to [667183a8](https://github.com/angular/angular.js/commit/667183a8c79d6ffce571a2be78c05dc76503b222),
-
-# v1.0.0rc6 runny-nose (2012-04-20)
+The `$animate` CSS class API will always defer changes until the end of the next digest. This allows ngAnimate
+to coalesce class changes which occur over a short period of time into 1 or 2 DOM writes, rather than
+many. This prevents jank in browsers such as IE, and is generally a good thing.
+If you find that your classes are not being immediately applied, be sure to invoke `$digest()`.
-## Bug Fixes
+Closes #8234
+Closes #9263
-- **select:** properly handle empty & unknown options without ngOptions
- ([904b69c7](https://github.com/angular/angular.js/commit/904b69c745ea4afc1d6ecd2a5f3138c6f947b157))
-- **compiler:** reading comment throws error in ie
- ([46bb08a9](https://github.com/angular/angular.js/commit/46bb08a9d0780fafef6dc5c1140c71912462887a))
-- **document:** accidental clobbering of document.getAttribute
- ([eafe15f5](https://github.com/angular/angular.js/commit/eafe15f54c686d5c83f777fd319f4c568e209432),
- [#877](https://github.com/angular/angular.js/issues/877))
-- **script:** Incorrectly reading script text on ie
- ([94dd6857](https://github.com/angular/angular.js/commit/94dd68570952f6f31abfa351b1159afcd3588a57))
+- **$select:** due to [30996f8](https://github.com/angular/angular.js/commit/30996f82afa03cd11771b3267e9367ecf9af6e6d)
+`ngOptions` will now throw an error when the comprehension expressions contains both a `select as`
+and `track by` expression.
-## Features
+These expressions are fundamentally incompatible because it is not possible to reliably and
+consistently determine the parent object of a model, since `select as` can assign any child of a
+`value` as the model value.
-- **$resource:** support HTTP PATCH method
- ([e61fd1b4](https://github.com/angular/angular.js/commit/e61fd1b43a55496c11c63da7ca2fc05b88d44043),
- [#887](https://github.com/angular/angular.js/issues/887))
-- **jquery:** jquery 1.7.2 support
- ([8ebe5ccd](https://github.com/angular/angular.js/commit/8ebe5ccd9ace7807bedc7317d605370fe82b773d))
+Prior to refactorings in this release, neither of these expressions worked correctly independently,
+and did not work at all when combined.
+See #6564
+- **$route:** due to [f4ff11b0](https://github.com/angular/angular.js/commit/f4ff11b01e6a5f9a9eb25a38d327dfaadbd7c80c),
-
-# 1.0.0rc5 reality-distortion (2012-04-12)
+Order of events has changed.
+Previously: `$locationChangeStart` -> `$locationChangeSuccess`
+ -> `$routeChangeStart` -> `$routeChangeSuccess`
+
+Now: `$locationChangeStart` -> `$routeChangeStart`
+ -> `$locationChangeSuccess` -> -> `$routeChangeSuccess`
+
+Fixes #5581
+Closes #5714
+Closes #9502
+
+
+
+# 1.3.0-rc.4 unicorn-hydrafication (2014-10-01)
## Bug Fixes
-- **$location:** properly rewrite urls in html5 mode with base url set + don't rewrite links to
- different base paths
- ([6d7e7fde](https://github.com/angular/angular.js/commit/6d7e7fdea6c3d6551ff40c150aa42e1375d2cb5f),
- [0a5050eb](https://github.com/angular/angular.js/commit/0a5050eb3c1f1ed84134f23a44b97a7261114060))
-- **e2eRunner:** $browser.location should delegate to apps $location
- ([df72852f](https://github.com/angular/angular.js/commit/df72852f3496d7640bb4f70837338e464b7ed69f))
-- **input.radio:** support 2-way binding in a repeater
- ([93d62860](https://github.com/angular/angular.js/commit/93d62860e988a09fb64e594f50f6cd55a1fc5748),
- [#869](https://github.com/angular/angular.js/issues/869))
-- **ngBindHtml:** clear contents when model is falsy
- ([10daefc6](https://github.com/angular/angular.js/commit/10daefc6f466a21d9418437666461c80cf24fcfe),
- [#864](https://github.com/angular/angular.js/issues/864))
-- lots of doc fixes
+- **$compile:**
+ - get $$observe listeners array as own property
+ ([a27d827c](https://github.com/angular/angular.js/commit/a27d827c22b0b6b3ba6b7495cf4fc338c6934b37),
+ [#9343](https://github.com/angular/angular.js/issues/9343), [#9345](https://github.com/angular/angular.js/issues/9345))
+ - Resolve leak with asynchronous compilation
+ ([6303c3dc](https://github.com/angular/angular.js/commit/6303c3dcf64685458fc84aa12289f5c9d57f4e47),
+ [#9199](https://github.com/angular/angular.js/issues/9199), [#9079](https://github.com/angular/angular.js/issues/9079), [#8504](https://github.com/angular/angular.js/issues/8504), [#9197](https://github.com/angular/angular.js/issues/9197))
+ - connect transclude scopes to their containing scope to prevent memory leaks
+ ([fb0c77f0](https://github.com/angular/angular.js/commit/fb0c77f0b66ed757a56af13f81b943419fdcbd7f),
+ [#9095](https://github.com/angular/angular.js/issues/9095), [#9281](https://github.com/angular/angular.js/issues/9281))
+ - sanitize srcset attribute
+ ([ab80cd90](https://github.com/angular/angular.js/commit/ab80cd90661396dbb1c94c5f4dd2d11ee8f6b6af))
+- **input:**
+ - register builtin parsers/formatters before anyone else
+ ([10644432](https://github.com/angular/angular.js/commit/10644432ca9d5da69ce790a8d9e691640f333711),
+ [#9218](https://github.com/angular/angular.js/issues/9218), [#9358](https://github.com/angular/angular.js/issues/9358))
+ - correctly handle invalid model values for `input[date/time/…]`
+ ([a0bfdd0d](https://github.com/angular/angular.js/commit/a0bfdd0d60882125f614a91c321f12f730735e7b),
+ [#8949](https://github.com/angular/angular.js/issues/8949), [#9375](https://github.com/angular/angular.js/issues/9375))
+- **ngModel:** do not parse undefined viewValue when validating
+ ([92f05e5a](https://github.com/angular/angular.js/commit/92f05e5a5900713301e64373d7b7daa45a88278b),
+ [#9106](https://github.com/angular/angular.js/issues/9106), [#9260](https://github.com/angular/angular.js/issues/9260))
+- **ngView:** use animation promises ensure that only one leave animation occurs at a time
+ ([3624e380](https://github.com/angular/angular.js/commit/3624e3800fb3ccd2e9ea361a763e20131fd42c29),
+ [#9355](https://github.com/angular/angular.js/issues/9355), [#7606](https://github.com/angular/angular.js/issues/7606), [#9374](https://github.com/angular/angular.js/issues/9374))
+- **select:** make ctrl.hasOption method consistent
+ ([2bcd02dc](https://github.com/angular/angular.js/commit/2bcd02dc1a6b28b357d47c83be3bed5c9a38417c),
+ [#8761](https://github.com/angular/angular.js/issues/8761))
## Features
-- **$http:** expose the defaults config as $http.defaults
- ([dceafd32](https://github.com/angular/angular.js/commit/dceafd32ee140c8af5c7a0ca6cb808395fffeed3))
-- **docs:** steps 0-4 of the Tutorial have been updated and improved
+- **$compile:** optionally get controllers from ancestors only
+ ([07e3abc7](https://github.com/angular/angular.js/commit/07e3abc7dda872adc3fb25cb3e133f86f494b35d),
+ [#4518](https://github.com/angular/angular.js/issues/4518), [#4540](https://github.com/angular/angular.js/issues/4540), [#8240](https://github.com/angular/angular.js/issues/8240), [#8511](https://github.com/angular/angular.js/issues/8511))
+- **Scope:** allow the parent of a new scope to be specified on creation
+ ([6417a3e9](https://github.com/angular/angular.js/commit/6417a3e9eb7ab0011cefada8db855aa929a64ff8))
-## Breaking Changes
+## Performance Improvements
-- `ng-ext-link` directive was removed because it's unnecessary
- ([6d7e7fde](https://github.com/angular/angular.js/commit/6d7e7fdea6c3d6551ff40c150aa42e1375d2cb5f))
+- **$rootScope:** moving internal queues out of the Scope instances
+ ([b1192518](https://github.com/angular/angular.js/commit/b119251827cea670051198e1b48af7ee0c9f2a1b),
+ [#9071](https://github.com/angular/angular.js/issues/9071))
+- **benchmark:** add ngBindOnce benchmarks to largetable-bp
+ ([2c8b4648](https://github.com/angular/angular.js/commit/2c8b4648526acf5c2645de8408a6d9ace2144b5f))
+- **ngForm,ngModel:** move initial addClass to the compile phase
+ ([b1ee5386](https://github.com/angular/angular.js/commit/b1ee5386d584f208bce6d3b613afdb3bae9df76a),
+ [#8268](https://github.com/angular/angular.js/issues/8268))
- apps that relied on ng-ext-link should simply replace it with `target="_self"`
-- `$browser.addCss` was removed - it was never meant to be a public api
- ([13d5528a](https://github.com/angular/angular.js/commit/13d5528a5f5a2f0feee5c742788a914d2371841e))
+## Breaking Changes
- apps the depend on this functionality should write a simple utility function specific to the app
- (see this diff for hints).
+- **$compile:** due to [fb0c77f0](https://github.com/angular/angular.js/commit/fb0c77f0b66ed757a56af13f81b943419fdcbd7f),
-- `$browser.addJs` method was removed - it was never meant to be a public api
- ([fbaa1968](https://github.com/angular/angular.js/commit/fbaa1968b7c596ccb63ea8b4be1d3bd92eda50d8))
- apps that depended on this functionality should either use many of the existing script loaders or
- create a simple helper method specific to the app.
+`$transclude` functions no longer attach `$destroy` event handlers to the
+transcluded content, and so the associated transclude scope will not automatically
+be destroyed if you remove a transcluded element from the DOM using direct DOM
+manipulation such as the jquery `remove()` method.
-- `$sanitize` service, `ngBindHtml` directive and `linky` filter were moved to the `ngSanitize` module
- ([5bcd7198](https://github.com/angular/angular.js/commit/5bcd7198664dca2bf85ddf8b3a89f417cd4e4796))
+If you want to explicitly remove DOM elements inside your directive that have
+been compiled, and so potentially contain child (and transcluded) scopes, then
+it is your responsibility to get hold of the scope and destroy it at the same time.
- apps that depend on any of these will need to load `angular-sanitize.js` and include `ngSanitize`
- in their dependency list: `var myApp = angular.module('myApp', ['ngSanitize']);`
+The suggested approach is to create a new child scope of your own around any DOM
+elements that you wish to manipulate in this way and destroy those scopes if you
+remove their contents - any child scopes will then be destroyed and cleaned up
+automatically.
+Note that all the built-in directives that manipulate the DOM (ngIf, ngRepeat,
+ngSwitch, etc) already follow this best practice, so if you only use these for
+manipulating the DOM then you do not have to worry about this change.
+Closes #9095
+Closes #9281
+- **$parse:** due to [5572b40b](https://github.com/angular/angular.js/commit/5572b40b15ed06969c8e0e92866c5afd088484b4),
+- $scope['this'] no longer exits on the $scope object
+- $parse-ed expressions no longer allow chaining 'this' such as this['this'] or $parent['this']
+- 'this' in $parse-ed expressions can no longer be overriden, if a variable named 'this' is put on the scope it must be accessed using this['this']
+Closes #9105
-
-# 1.0.0rc4 insomnia-induction (2012-04-05)
+- **input:** due to [1eda1836](https://github.com/angular/angular.js/commit/1eda18365a348c9597aafba9d195d345e4f13d1e),
+(Note: this change landed in 1.3.0-rc.3, but was not considered a breaking change at the time).
-## Bug Fixes
+For text based inputs (text, email, url), the `$viewValue` will now always be converted to a string,
+regardless of what type the value is on the model.
-- **$compile:** relax the restriction that directives can not add siblings
- ([7e86eacf](https://github.com/angular/angular.js/commit/7e86eacf301934335c22908ec6dbd1a083d88fab))
-- **$location:** search setter should not double-encode the value
- ([59fa40ec](https://github.com/angular/angular.js/commit/59fa40ec0e851759d35fb0ea5fd01019d1403049),
- [#751](https://github.com/angular/angular.js/issues/751))
-- **$q:** $q.reject should forward callbacks if missing
- ([c0b78478](https://github.com/angular/angular.js/commit/c0b78478a0e64942a69aba7c1bfa4eb01c0e9a5e),
- [#845](https://github.com/angular/angular.js/issues/845))
-- **build:** move `'use strict';` flag into the angular closure
- ([637817e3](https://github.com/angular/angular.js/commit/637817e3ba48d149e7a9628533d21e81c650d988))
-- **Directives**:
- - **ngModel:** update model on each key stroke (revert ngModelInstant)
- ([06d09550](https://github.com/angular/angular.js/commit/06d0955074f79de553cc34fbf945045dc458e064))
- - **booleanAttrs:** always convert the model to boolean before setting the element property
- ([dcb8e076](https://github.com/angular/angular.js/commit/dcb8e0767fbf0a7a55f3b0045fd01b2532ea5441))
- - **form:** preperly clean up when invalid widget is removed
- ([21b77ad5](https://github.com/angular/angular.js/commit/21b77ad5c231ab0e05eb89f22005f7ed8d40a6c1))
- - **ngHref:** copy even if no binding
- ([2f5dba48](https://github.com/angular/angular.js/commit/2f5dba488e855bcdbb9304aa809efcb9de7b43e9))
- - **ngInclude:** fire $includeContentLoaded on proper (child) scope
- ([199ac269](https://github.com/angular/angular.js/commit/199ac269869a57bb63d60c9b3f510d546bf0c9b2))
+To migrate, any code or expressions that expect the `$viewValue` to be anything other than string
+should be updated to expect a string.
-## Features
+- **input:** due to a0bfdd0d60882125f614a91c321f12f730735e7b (see #8949),
-- **$http:** add `withCredentials` config option
- ([86182a94](https://github.com/angular/angular.js/commit/86182a9415b9209662b16c25c180b958ba7e6cf9))
-- **$route:** allow chaining of whens and otherwise
- ([15ecc6f3](https://github.com/angular/angular.js/commit/15ecc6f3668885ebc5c7130dd34e00059ddf79ae))
-- **ngInclude:** allow ngInclude as css class
- ([428f2b56](https://github.com/angular/angular.js/commit/428f2b563663315df4f235ca19cef4bdcf82e2ab))
+Similar to `input[number]` Angular will now throw if the model value
+for a `input[date]` is not a `Date` object. Previously, Angular only
+showed an empty string instead.
+Angular does not set validation errors on the `` in this case
+as those errors are shown to the user, but the erroneous state was
+caused by incorrect application logic and not by the user.
-## Docs
-- reintroduced the tutorial docs - currently only steps 0-3 are up to date and the code is not split
- up into step specific commits yet. See
- [this branch](https://github.com/angular/angular-phonecat/tree/v1.0-update) instead.
-- various other doc fixes
+
+# 1.3.0-rc.3 aggressive-pacification (2014-09-23)
-## Breaking Changes
+## Bug Fixes
-We removed two useless features:
+- **ngModel:** support milliseconds in time and datetime
+ ([4b83f6ca](https://github.com/angular/angular.js/commit/4b83f6ca2c15bd65fe2b3894a02c04f9967fbff4),
+ [#8874](https://github.com/angular/angular.js/issues/8874))
-- $routeProvider.when used to return the route definition object but now it returns self
- ([15ecc6f3](https://github.com/angular/angular.js/commit/15ecc6f3668885ebc5c7130dd34e00059ddf79ae))
-- ngInclude does not have scope attribute anymore
- ([5f70d615](https://github.com/angular/angular.js/commit/5f70d615a5f7e102424c6adc15d7a6f697870b6e))
-- ngModelInstant directive is no more and ngModel behaves just as ngModelInstant used to. This
- doesn't really break anything, just remember to remove all ngModelInstant references from your
- template as they serve no purpose now.
- ([06d09550](https://github.com/angular/angular.js/commit/06d0955074f79de553cc34fbf945045dc458e064))
+## Features
+- **$location:** add ability to opt-out of `` tag requirement in html5Mode
+ ([dc3de7fb](https://github.com/angular/angular.js/commit/dc3de7fb7a14c38b5c3dc7decfafb0b51d422dd1),
+ [#8934](https://github.com/angular/angular.js/issues/8934))
+- **formController:** add $setUntouched to propagate untouched state
+ ([fd899755](https://github.com/angular/angular.js/commit/fd8997551f9ed4431f5e99d61f637139485076b9),
+ [#9050](https://github.com/angular/angular.js/issues/9050))
+- **input:** support dynamic element validation
+ ([729c238e](https://github.com/angular/angular.js/commit/729c238e19ab27deff01448d79342ea53721bfed),
+ [#4791](https://github.com/angular/angular.js/issues/4791), [#1404](https://github.com/angular/angular.js/issues/1404))
+- **ngAria:** add an ngAria module to make a11y easier
+ ([d1434c99](https://github.com/angular/angular.js/commit/d1434c999a66c6bb915ee1a8b091e497d288d940),
+ [#5486](https://github.com/angular/angular.js/issues/5486))
-
-# 1.0.0rc3 barefoot-telepathy (2012-03-29)
+## Performance Improvements
-## Bug Fixes
+- **map:** use Array.prototype.map
+ ([a591e8b8](https://github.com/angular/angular.js/commit/a591e8b8d302efefd67bf0d5c4bad300a5f3aded))
-- **$compile:**
- - properly clone attr.$observers in ng-repeat
- ([f2106692](https://github.com/angular/angular.js/commit/f2106692b1ebf00aa5f8b2accd75f014b6cd4faa))
- - create new (isolate) scopes for directives on root elements
- ([5390fb37](https://github.com/angular/angular.js/commit/5390fb37d2c01937922613fc57df4986af521787),
- [#817](https://github.com/angular/angular.js/issues/817))
-- **angular.forEach:** should ignore prototypically inherited properties
- ([8d7e6948](https://github.com/angular/angular.js/commit/8d7e6948496ff26ef1da8854ba02fcb8eebfed61),
- [#813](https://github.com/angular/angular.js/issues/813))
-- **initialization:** use jQuery#ready for initialization if available
- ([cb2ad9ab](https://github.com/angular/angular.js/commit/cb2ad9abf24e6f855cc749efe3155bd7987ece9d),
- [#818](https://github.com/angular/angular.js/issues/818))
-- **$q:** resolve all of nothing to nothing
- ([ac75079e](https://github.com/angular/angular.js/commit/ac75079e2113949d5d64adbcf23d56f3cf295d41))
+## Breaking Changes
-## Features
+- **$location:** due to [dc3de7fb](https://github.com/angular/angular.js/commit/dc3de7fb7a14c38b5c3dc7decfafb0b51d422dd1),
+ The $location.html5Mode API has changed to allow enabling html5Mode by
+ passing an object (as well as still supporting passing a boolean). Symmetrically, the
+ method now returns an object instead of a boolean value.
-- **$compile:** do not interpolate boolean attribute directives, rather evaluate them
- ([a08cbc02](https://github.com/angular/angular.js/commit/a08cbc02e78e789a66e9af771c410e8ad1646e25))
-- **$controller:** support controller registration via $controllerProvider
- ([d54dfecb](https://github.com/angular/angular.js/commit/d54dfecb00fba41455536c5ddd55310592fdaf84))
-- **$http:**
- - make the `transformRequest` and `transformResponse` default to an array
- ([a8a750ab](https://github.com/angular/angular.js/commit/a8a750ab05bdff73ba3af0b98f3f284ff8d1e743))
- - added `params` parameter
- ([73c85930](https://github.com/angular/angular.js/commit/73c8593077155a9f2e8ef42efd4c497eba0bef4f))
-- **TzDate:** add support for toISOString method
- ([da9f4dfc](https://github.com/angular/angular.js/commit/da9f4dfcf4f3d0c21821d8474ac0bb19a3c51415))
-- **jqLite:** make injector() and scope() work with the document object
- ([5fdab52d](https://github.com/angular/angular.js/commit/5fdab52dd7c269f99839f4fa6b5854d9548269fa))
-- **ngValue:** directive that allows radio inputs to have non string values
- ([09e175f0](https://github.com/angular/angular.js/commit/09e175f02cca0f4a295fd0c9b980cd8f432e722b),
- [#816](https://github.com/angular/angular.js/issues/816))
+ To migrate, follow the code example below:
+ Before:
-## Breaking Changes
+ var mode = $locationProvider.html5Mode();
-- `$resource`, `$cookies` and `$cookieStore` services are now distributed as separate modules, see
- `angular-resource.js` and `angular-cookies.js`.
- ([798bca62](https://github.com/angular/angular.js/commit/798bca62c6f64775b85deda3713e7b6bcc7a4b4d),
- [7b22d59b](https://github.com/angular/angular.js/commit/7b22d59b4a16d5c50c2eee054178ba17f8038880))
-- angular.fromJson doesn't deserialize date strings into date objects.
- ([ac4318a2](https://github.com/angular/angular.js/commit/ac4318a2fa5c6d306dbc19466246292a81767fca))
-- angular.toJson always use native JSON.parse and JSON.stringify - this might break code that
- consumes the output in whitespace-sensitive way
- ([35125d25](https://github.com/angular/angular.js/commit/35125d25137ac2da13ed1ca3e652ec8f2c945053))
-- IE7 and older have are now required to polyfill the JSON global object
- ([87f5c6e5](https://github.com/angular/angular.js/commit/87f5c6e5b716100e203ec59c5874c3e927f83fa0))
-- boolean attr directives (ng-disabled, ng-required, etc) are evaluated rather than interpolated
- ([a08cbc02](https://github.com/angular/angular.js/commit/a08cbc02e78e789a66e9af771c410e8ad1646e25))
-- `ng-bind-attr` directive removed
- ([55027132](https://github.com/angular/angular.js/commit/55027132f3d57e5dcf94683e6e6bd7b0aae0087d))
-- any app that depends on $sniffer service should use Modernizr instead
- ([aaedefb9](https://github.com/angular/angular.js/commit/aaedefb92e6bec6626e173e5155072c91471596a))
-
-
-
-
-# 1.0.0rc2 silence-absorption (2012-03-20)
+ After:
-## Features
+ var mode = $locationProvider.html5Mode().enabled;
-- **$route:** when matching consider trailing slash as optional
- ([a4fe51da](https://github.com/angular/angular.js/commit/a4fe51da3ba0dc297ecd389e230d6664f250c9a6))
-- **jqLite:** add .controller() method
- ([6c5a05ad](https://github.com/angular/angular.js/commit/6c5a05ad49a1e083570c3dfe331403398f899dbe))
-- **scope.$eval:** allow passing locals to the expression
- ([192ff61f](https://github.com/angular/angular.js/commit/192ff61f5d61899e667c6dbce4d3e6e399429d8b))
-- **input[type=radio]:** allow the value attribute to be interpolated
- ([ade6c452](https://github.com/angular/angular.js/commit/ade6c452753145c84884d17027a7865bf4b34b0c))
+Fixes #8934
-## Bug Fixes
-- **$http:** don't send Content-Type header when no data
- ([1a5bebd9](https://github.com/angular/angular.js/commit/1a5bebd927ecd22f9c34617642fdf58fe3f62efb),
- [#749](https://github.com/angular/angular.js/issues/749))
-- **$resource:** support escaping of ':' in resource url
- ([6d6f8753](https://github.com/angular/angular.js/commit/6d6f875345e01f2c6c63ef95164f6f39e923da15))
-- **$compile:**
- - don't touch static element attributes
- ([9cb2195e](https://github.com/angular/angular.js/commit/9cb2195e61a78e99020ec19d687a221ca88b5900))
- - merge interpolated css class when replacing an element
- ([f49eaf8b](https://github.com/angular/angular.js/commit/f49eaf8bf2df5f4e0e82d6c89e849a4f82c8d414))
- - allow transclusion of root elements
- ([9918b748](https://github.com/angular/angular.js/commit/9918b748be01266eb10db39d51b4d3098d54ab66))
-- **$log:** avoid console.log.apply calls in IE
- ([15213ec2](https://github.com/angular/angular.js/commit/15213ec212769837cb2b7e781ffc5bfd598d27ca),
- [#805](https://github.com/angular/angular.js/issues/805))
-- **json:** added support for iso8061 timezone
- ([5ac14f63](https://github.com/angular/angular.js/commit/5ac14f633a69f49973b5512780c6ec7752405967))
-- **e2e runner:** fix typo that caused errors on IE8
- ([ee5a5352](https://github.com/angular/angular.js/commit/ee5a5352fd4b94cedee6ef20d4bf2d43ce77e00b),
- [#806](https://github.com/angular/angular.js/issues/806))
-- **directives:**
- - **select:** multiselect failes to update view on selection insert
- ([6ecac8e7](https://github.com/angular/angular.js/commit/6ecac8e71a84792a434d21db2c245b3648c55f18))
- - **ngForm:** alias name||ngForm
- ([823adb23](https://github.com/angular/angular.js/commit/823adb231995e917bc060bfa49453e2a96bac2b6))
- - **ngView:** publish the controller
- ([21e74c2d](https://github.com/angular/angular.js/commit/21e74c2d2e8e985b23711785287feb59965cbd90))
- - **ngRepeat:** correct variable reference in error message
- ([935c1018](https://github.com/angular/angular.js/commit/935c1018da05dbf3124b2dd33619c4a3c82d7a2a))
- - various doc fixes (some contributed by Daniel Zen)
-
-
-
-
-# 1.0.0rc1 moiré-vision (2012-03-13)
-
-## $compile rewrite
-
-The compiler was completely rewritten from scratch using ideas from this
-[design document](https://docs.google.com/document/d/1PNh4lxlYpSRK2RhEwD4paJLMwdcnddcYJn3rsDsdayc/edit).
-Please check out the [$compile] and
-[$compileProvider.directive](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive)
-docs. The biggest improvements and changes are listed below.
-
-- the compiler now transparently supports several directive syntaxes. For example while before there
- was just one way to use `ng:include` directive: ``. The new
- compiler treats all of the following as equivalent:
-
- - ``
- - ``
- - ``
- - ``
- - ``
- - ``
- - ``
- - ``
- - ``
- - ``
-
- This will give template creators great flexibility to consider the tradeoffs between html code
- validity and code conciseness and pick the syntax that works the best for them.
-
-- we are switching all of our code/docs/examples to use `ng-foo` directive name style instead of
- `ng:foo`. The new compiler doesn't distinguish between these and other name styles (all of them
- are [equally supported](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive)),
- the main difference is that `ng-foo` is easier to select with css selectors. Check out the
- [Internet Explorer Compatibility](http://docs-next.angularjs.org/guide/ie)
- doc to learn about various IE-related requirements for different directive naming styles.
-
-- `angular.directive`, `angular.widget`, `angular.attrWidget` were merged into a single concept: a
- `directive` which is registered via
- [myModule.directive](http://docs-next.angularjs.org/api/angular.Module#directive) or
- [$compileProvider.directive](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive).
- You can control execution priority of multiple directives on the same element (previously the main
- difference between a attribute widget and a directive) via a directive priority setting.
-
-- previously the linking functions of directives were called top to bottom following the DOM tree,
- to enable a linking fn to work child DOM nodes that were already processed by child linking fns
- the order was changed as follows: compile functions run top to bottom following the DOM tree, but
- linking functions run bottom-up following the DOM tree. In some rare cases it is desirable for
- linking fns to be called top to bottom and for these it is possible to register "prelinking"
- functions (check out
- [the docs](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive)
- for the return value of the compile function).
-
-- `angular.markup` and `angular.attrMarkup` were replaced with interpolation via `$interpolate`
- service.
-
- - In the past `{{foo}}` markup was getting translated to `` during the
- early stage of template compilation. Addition of this extra node was in some cases undesirable
- and caused problems. The new compiler with the help of the $interpolate service removes the need
- for these artificial nodes.
-
- - As a side-effect of not using artificial nodes available for all bindings, the `html` filter
- which used to innerHTML (sanitized) html into the artificial node was converted into a directive.
- So instead of `{{ someRawHtml | html }}` use `` and
- instead of `{{ someRawHtml | html:"unsafe" }}` use ``.
- Please check out the
- [ng-bind-html](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive.ngBindHtml)
- and
- [ng-bind-html-unsafe](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive.ngBindHtmlUnsafe)
- directive docs.
-
- - Custom markup has been used by developers only to switch from `{{ }}` markup to `(( ))` or
- something similar in order to avoid conflicts with server-side templating libraries. We made it
- easier to do this kind of customization by making the start and end symbol of the interpolation
- configurable via [$interpolateProvider](http://docs-next.angularjs.org/api/angular.module.ng.$interpolateProvider).
-
-- [template loader](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive.script)
- loads template fragments from script elements and populates the $templateCache with them. Templates
- loaded in this way can be then used with `ng-include`, `ng-view` as well as directive templates
- (see the `templateUrl` property of the
- [directive config object](http://docs-next.angularjs.org/api/angular.module.ng.$compileProvider.directive)).
-
-
-## Forms / input controls / two-way data binding
-
-The implementation of forms and input bindings was modified to address issues around composability,
-ease of adding custom validation and formatting. Please check out the
-[forms dev guide article](http://docs-next.angularjs.org/guide/dev_guide.forms) to learn about forms,
-form control bindings and input validation. The biggest changes are listed below.
-
-- any directive can add formatter/parser (validators, convertors) to an input type. This allows
- better composability of input types with custom validators and formatters. So instead of creating
- new custom input type for everything, it's now possible to take existing input type and add an
- additional formatter and/or validator to it via a custom directive.
+
+# 1.3.0-rc.2 tactile-perception (2014-09-16)
-- inputs propagates changes only on the blur event by default (use new `ng-model-instant` directive
- if you want to propagate changes on each keystroke).
-- no more custom input types, use directives to customize existing types.
+## Bug Fixes
-- removed $formFactory.
-
-- removed parallel scope hierarchy (forms, widgets).
+- **$compile:** update `'@'`-bindings in controller when `bindToController` is `true`
+ ([e7ac08a0](https://github.com/angular/angular.js/commit/e7ac08a0619d2bdc91c125d341772b4fbc0d5a78),
+ [#9052](https://github.com/angular/angular.js/issues/9052), [#9077](https://github.com/angular/angular.js/issues/9077))
+- **$parse:** ensure CSP assignable expressions have `assign()`
+ ([d13b4bd1](https://github.com/angular/angular.js/commit/d13b4bd1f5f2abaad00f5d1bf81f79549a8d0e46),
+ [#9048](https://github.com/angular/angular.js/issues/9048))
+- **i18n:** fix typo at i18n generation code
+ ([eb4afd45](https://github.com/angular/angular.js/commit/eb4afd45f77d7d67744e01ce63a831c13c2b22e8))
+- **input:** always pass in the model value to `ctrl.$isEmpty`
+ ([3e51b84b](https://github.com/angular/angular.js/commit/3e51b84bc19f7e6acc61cb536ddcdbfed307c831),
+ [#5164](https://github.com/angular/angular.js/issues/5164), [#9017](https://github.com/angular/angular.js/issues/9017))
+- **jqLite:** fix `event.stopImmediatePropagation()` so it works as expected
+ ([30354c58](https://github.com/angular/angular.js/commit/30354c58fe2bd371df364f7a3f55b270692a4051),
+ [#4833](https://github.com/angular/angular.js/issues/4833))
+- **ngLocale:** Regenerate Locale Files
+ ([6a96a820](https://github.com/angular/angular.js/commit/6a96a8200aff4749bc84c44a1e8018b09d9ebdb4),
+ [#8931](https://github.com/angular/angular.js/issues/8931), [#8583](https://github.com/angular/angular.js/issues/8583), [#7799](https://github.com/angular/angular.js/issues/7799))
+- **ngModel:**
+ - do not reset bound date objects
+ ([1a1ef629](https://github.com/angular/angular.js/commit/1a1ef62903c8fdf4ceb81277d966a8eff67f0a96),
+ [#6666](https://github.com/angular/angular.js/issues/6666))
+ - don’t clear the model when an external validator failed
+ ([9314719d](https://github.com/angular/angular.js/commit/9314719d1eb5f480b877f5513f6e0e474edcb67d),
+ [#8357](https://github.com/angular/angular.js/issues/8357), [#8080](https://github.com/angular/angular.js/issues/8080))
+- **ngResource:** make badcfg error message more helpful
+ ([a3962f0d](https://github.com/angular/angular.js/commit/a3962f0df3f9b8382b47952f9e4fcb48a4cc098b),
+ [#9005](https://github.com/angular/angular.js/issues/9005), [#9010](https://github.com/angular/angular.js/issues/9010))
+- **select:** update option labels when model changes
+ ([46274102](https://github.com/angular/angular.js/commit/46274102454038ee7fd4543a32166e9bbbc98904),
+ [#9025](https://github.com/angular/angular.js/issues/9025))
-- removed `list` input type (use `ng-list` directive instead).
-
-- removed integer input type.
-
-
-## Controller-scope separation
-
-Controllers are now standalone objects, created using the "new" operator, and not mixed with scope
-object anymore. This addresses many issues including:
-[#321](https://github.com/angular/angular.js/issues/321) and
-[#425](https://github.com/angular/angular.js/issues/425).
-The [design doc](https://docs.google.com/document/pub?id=1SsgVj17ec6tnZEX3ugsvg0rVVR11wTso5Md-RdEmC0k)
-explains the reasoning for this major change and how it solves many issues.
-
-### Before:
+## Features
-
-function MyCtrl() {
- var self = this;
+- **limitTo:** support numeric input to limitTo
+ ([1c8a7459](https://github.com/angular/angular.js/commit/1c8a7459c90efc77b1a0987f976e3bddab4565fe),
+ [#8926](https://github.com/angular/angular.js/issues/8926))
+- **ngInclude:** add template url parameter to events
+ ([fd2d6c02](https://github.com/angular/angular.js/commit/fd2d6c02f9654e753d3655a3377a9534f7a54de3),
+ [#8453](https://github.com/angular/angular.js/issues/8453), [#8454](https://github.com/angular/angular.js/issues/8454))
- this.model = 'some model of any type';
- this.fnUsedFromTemplate = function() {
- someApiThatTakesCallback(function callbackFn() {
- self.model = 'updatedModel';
- });
- };
-}
-
+## Performance Improvements
-### After:
+- **$compile:** move `$$isolateBinding` creation to directive factory instead of on each link
+ ([56f09f0b](https://github.com/angular/angular.js/commit/56f09f0b44048b62f964d29db4d3d2630662f6ea))
+- **$parse:**
+ - execute watched expressions only when the inputs change
+ ([fca6be71](https://github.com/angular/angular.js/commit/fca6be71274e537c7df86ae9e27a3bd1597e9ffa),
+ [#9006](https://github.com/angular/angular.js/issues/9006), [#9082](https://github.com/angular/angular.js/issues/9082))
+ - remove `binaryFn` and `valueFn` wrappers from filter expressions
+ ([67919c80](https://github.com/angular/angular.js/commit/67919c808771a9b185a9d552cd32a90748d36666))
-
-function MyCtrl($scope) {
- $scope.model = 'some model of any type';
- $scope.fnUsedFromTemplate = function() {
- someApiThatTakesCallback(function() {
- $scope.model = 'updatedModel';
- });
- }
-}
-
+## Breaking Changes
-Temporary backwards compatibility: Load the following module in your app to recreate the previous
-behavior and migrate your controllers one at a time:
+- **$parse:** due to [fca6be71](https://github.com/angular/angular.js/commit/fca6be71274e537c7df86ae9e27a3bd1597e9ffa),
+ all filters are assumed to be stateless functions
+Previously it was just a good practice to make all filters stateless. Now
+it's a requirement in order for the model change-observation to pick up
+all changes.
-## $route service changes
+If an existing filter is statefull, it can be flagged as such but keep in
+mind that this will result in a significant performance-penalty (or rather
+lost opportunity to benefit from a major perf improvement) that will
+affect the `$digest` duration.
-- As advertised in the past we moved the $route configuration from the run phase of the application
- to the config phase. This means that instead of defining routes via `$route.when`/`$route.otherwise`
- you should use `$routeProvider.when`/`$routeProvider.otherwise` instead.
+To flag a filter as stateful do the following:
-- route scope is now being created by the `ng-view` rather than by `$route`, this resolved many
- issues we've previously faced. For more info, read the
- [commit message](https://github.com/angular/angular.js/commit/60743fc52aea9eabee58258a31f4ba465013cb4e).
+```javascript
+myApp.filter('myFilter', function() {
+ function myFilter(input) { ... };
+ myFilter.$stateful = true;
+ return myFilter;
+});
+```
-- removed `$route.parent()` - it's unnecessary because the scope is properly created in the scope
- hierarchy by `ng-view`.
-- new `$viewContentLoaded` and `$includeContentLoaded` events which directives can use to be
- notified when a template content is (re)loaded.
-- `ng-view` now has `onload` attribute which behaves similarly to the one on `ng-include`.
+
+# 1.3.0-rc.1 backyard-atomicity (2014-09-09)
-## Directives
+## Bug Fixes
-- `ng-model` binding on select[multiple] element should support binding to an array
- ([commit](https://github.com/angular/angular.js/commit/85b2084f578652cc0dcba46c689683fc550554fe))
-- event object is now accessible as `$event` in `ng-click` and other directives
- ([commit](https://github.com/angular/angular.js/commit/1752c8c44a7058e974ef208e583683eac8817789),
- issue [#259](https://github.com/angular/angular.js/issues/259)
-- `ng-class` directive now support map of classnames and conditions
- e.g. `
+
+
+
+```
-- [$sanitize](http://docs-next.angularjs.org/api/angular.module.ng.$sanitize)
-- [$interpolate](http://docs-next.angularjs.org/api/angular.module.ng.$interpolate)
+Closes #8858
+Closes #8822
-## jqLite (angular.element)
-- added `contents()` ([commit](https://github.com/angular/angular.js/commit/97dae0d0a0226ee527771578bfad1342d51bf4dd))
-- added `wrap()` ([commit](https://github.com/angular/angular.js/commit/4a051efb89cf33e30d56f1227d1f6084ead4cd42))
-- fix memory leaking in IE8 (remove monkey patched methods on Event)
- ([commit](https://github.com/angular/angular.js/commit/3173d8603db4ae1c2373e13a7a490988126bb1e7),
- [commit](https://github.com/angular/angular.js/commit/230f29d0a78a04a6963514da8b1e34cc03e553d0))
-
-
-## Docs
-
-- new [Modules dev guide article](http://docs-next.angularjs.org/guide/module)
-
-
-## Small bug fixes
-
-- fix incorrect comparison of dates by angular.equals
- ([commit](https://github.com/angular/angular.js/commit/ffa84418862a9f768ce5b9b681916438f14a0d79))
-- `scope.$watch` support watching functions
- ([commit](https://github.com/angular/angular.js/commit/7da2bdb82a72dffc8c72c1becf6f62aae52d32ce),
- [commit](https://github.com/angular/angular.js/commit/39b3297fc34b6b15bb3487f619ad1e93c4480741))
-- `$http` should not json-serialize File objects, instead just send them raw
- ([commit](https://github.com/angular/angular.js/commit/5b0d0683584e304db30462f3448d9f090120c444))
-- `$compile` should ignore content of style and script elements
- ([commit](https://github.com/angular/angular.js/commit/4c1c50fd9bfafaa89cdc66dfde818a3f8f4b0c6b),
- [commit](https://github.com/angular/angular.js/commit/d656d11489a0dbce0f549b20006052b215c4b500))
-- `TzDate#getDay()` should take into account the timezone offset (contributed by Stephane Bisson)
- ([commit](https://github.com/angular/angular.js/commit/e86bafecd212789cde61050073a69c1e49ffd011))
-
-
-## Small features
-
-- `$parse` service now supports local vars in expressions
- ([commit](https://github.com/angular/angular.js/commit/761b2ed85ad9685c35f85513e17363abf17ce6b3))
-
-
-
-
-# 0.10.6 bubblewrap-cape (2012-01-17) #
-
-## Features:
-
-- [Dependency injection subsystem][guide2.di] rewrite. This is a huge change to the Angular core
- that was necessary for many reasons. Please read the full
- [design doc](https://docs.google.com/document/d/1hJnIqWhSt7wCacmWBB01Bmc6faZ8XdXJAEeiJwjZmqs/edit?hl=en_US)
- to understand the changes and reasoning behind them.
-- Added [angular.bootstrap] for manual bootstrapping of the app. Also see
- [Initializing Angular App][bootstrapping] doc.
-- Helper functions [inject] and [module] that make testing with DI and jasmine a lot easier.
-- [jqLite][jqLite2] and jQuery were extended with helper method `injector()` that simplifies the
- access to the application injector during debugging.
-- Rewrite of $xhr service and its dependencies, which was replaced with [$http] service.
- The $browser.xhr and its mock were replaced by [$httpBackend] and its
- [unit testing][unit-testing $httpBackend] and [end-to-end testing][e2e-testing $httpBackend]
- mocks. The $resource service api and functionality was preserved, with the exception of caching,
- which is not happening automatically as it used it in the past (verifyCache has no effect).
-- [$q] - Q-like deferred/promise implementation
- ([commit](https://github.com/angular/angular.js/commit/1cdfa3b9601c199ec0b45096b38e26350eca744f))
-- Transparent data-binding to promises in templates. [Example](http://jsfiddle.net/IgorMinar/aNSWu/)
- ([commit](https://github.com/angular/angular.js/commit/78b6e8a446c0e38075c14b724f3cdf345c01fa06))
-- New [$anchorScroll] service that watches url hash and navigates to the html anchor even if the
- content was loaded via [ng:view] (for [ng:include] you have to opt into this behavior using
- autoscroll attribute)
-- New LRU cache factory - [$cacheFactory] service
-- jQuery 1.7 compatibility
-
-
-## Bug Fixes:
-
-- Directive names are now case insensitive
- ([commit](https://github.com/angular/angular.js/commit/1e00db8daa5c09e7f8f9134f5c94b9a18c7dc425))
-- $location#url setter fix (Issue [#648](https://github.com/angular/angular.js/issues/648))
-- [ng:include] - prevent race conditions by ignoring stale http callbacks
- ([commit](https://github.com/angular/angular.js/commit/1d14760c6d3eefb676f5670bc323b2a7cadcdbfa))
-- [ng:repeat] - support repeating over array with null
- ([commit](https://github.com/angular/angular.js/commit/cd9a7b9608707c34bec2316ee8c789a617d22a7b))
-- [angular.copy] - throw Error if source and destination are identical
- ([commit](https://github.com/angular/angular.js/commit/08029c7b72a857ffe52f302ed79ae12db9efcc08))
-- Forms should not prevent POST submission if the action attribute is present
- ([commit](https://github.com/angular/angular.js/commit/c9f2b1eec5e8a9eaf10faae8a8accf0b771096e0))
-
-
-## Breaking Changes:
-
-- App bootstrapping works differently (see [angular.bootstrap] and [ng:app] and [bootstrapping])
-- scope.$service is no more (because injector creates scope and not the other way around),
- if you really can't get services injected and need to fetch them manually then, get hold of
- [$injector] service and call $injector.get('serviceId')
-- angular.service style service registration was replaced with module system, please see
- [angular.module] api and [DI documentation][guide2.di] for more info.
-- the $xhr service was replaced with [$http] with promise based apis.
-- [unit-testing $httpBackend]'s expect method (the replacement for $browser.xhr.expect) is stricter -
- the order of requests matters and a single request expectation can handle only a single request.
-- compiler
- - compiler is a service, so use [$compile] instead of angular.compile to compile templates
- - $compile (nee angular.compile) returns the linking function which takes one mandatory argument -
- the scope. previously this argument was optional and if missing, the compiler would create a new
- root scope, this was a source of bugs and was removed
-- filters
- - filters need to be registered either via [moduleName.filter][angular.Module] or
- [$filterProvider.filter][$filterProvider]
- - filters don't have access to the dom element
- - currency filter doesn't make negative values red
- - json filter doesn't print out stuff in monospace
-- type augmentation via angular.Array, and angular.Object is gone. As a replacement use filters
- ([filter], [limitTo], [orderBy]), ES5 apis (e.g. Array#indexOf), or create custom filters (e.g.
- as a replacement for $count and $sum).
-- [$browser.defer.flush] now throws an exception when queue is empty
- ([commit](https://github.com/angular/angular.js/commit/63cca9afbcf7a772086eb4582d2f409c39e0ed12))
-- scope.$apply and scope.$digest throws an exception if called while $apply or $digest is already
- in progress (this is a programming error, you should never need to do this)
- ([commit](https://github.com/angular/angular.js/commit/0bf611087b2773fd36cf95c938d1cda8e65ffb2b))
-
-
-
-# 0.10.5 steel-fist (11-11-08) #
-
-## Features:
-
-- [ng:autobind]: drop angular.js file name restrictions
- ([commit](https://github.com/angular/angular.js/commit/d7ba5bc83ba9a8937384ea677331c5156ed6772d))
-- [Scope]: better logging of infinite digest error
- ([commit](https://github.com/angular/angular.js/commit/ef875ad0cf4349144cb4674e050dd160564f6dd9),
- issue [#621](https://github.com/angular/angular.js/issues/621))
-- enable [widget] styling in IE8 and below using
- [html5shiv](http://code.google.com/p/html5shiv/)-like approach
- ([commit](https://github.com/angular/angular.js/commit/163c799effd5cfadc57990f4d4127651bae3fbdb),
- issue [#584](https://github.com/angular/angular.js/issues/584))
-- [ng:style]: compatibility + perf improvements
- ([commit](https://github.com/angular/angular.js/commit/e2663f62b0fbb8b9ce2e706b821a135e0bc7e885))
-
-
-## Bug Fixes:
-- [ng:view]: ignore stale xhr callbacks - fixes issues caused by race-conditions which occured when
- user navigated to a new route before the current route finished loading
- (issue [#619](https://github.com/angular/angular.js/issues/619))
-- [ng:form] should always be a block level (css) element
- ([commit](https://github.com/angular/angular.js/commit/02dc81bae0011b7ae4190363be5fdd5db420aca9))
-- Fixes for [e2e test runner]'s `$location` dsl
- ([commit](https://github.com/angular/angular.js/commit/dc8ffa51b7ebe5fb9bc1c89087c8b3c9e65d1006))
-- [ng:repeat] when iterating over arrays ignore non-array properties + when iterating over objects
- sort keys alphabetically
- ([commit](https://github.com/angular/angular.js/commit/3945f884c5777e629b57c9ab0e93b9d02b9840d0))
-
-## Docs:
-- experimental [disqus.com](http://disqus.com/) integration for all docs-next.angularjs.org pages
- ([commit](https://github.com/angular/angular.js/commit/28ed5ba46595a371bd734b92a6e4bb40d1013741),
- contributed by Dan Doyon)
-- [e2e test runner] docs were moved to the dev guide
-
-
-
-
-# 0.10.4 human-torch (2011-10-22) #
-
-## Features:
-
-- New validation options for
- [input widgets](http://docs-next.angularjs.org/api/angular.widget.input): `ng:minlength` and
- `ng:maxlength`
- ([commit](https://github.com/angular/angular.js/commit/78f394fd17be581c84ecd526bb786ed1681d35cb))
- (contributed by Konstantin Stepanov)
-- HTML sanitizer was updated to recognize all safe HTML5 elements
- (Issue [#89](https://github.com/angular/angular.js/issues/89))
-- [ng:options]' blank option is now compiled and data-bound as any other template
- (Issue [#562](https://github.com/angular/angular.js/issues/562))
- (contributed by tehek)
-- [$defer](http://docs-next.angularjs.org/api/angular.service.$defer) service now exposes `cancel`
- method for task cancellation
- ([commit](https://github.com/angular/angular.js/commit/ad90c3574f8365ee4a1a973d5e43c64fe9fcda2c))
-
-
-## Bug Fixes:
-
-- [ng:options] should select correct element when '?'-option (invalid value) was previously selected
- (Issue [#599](https://github.com/angular/angular.js/issues/599)) (contributed by Tehek)
-- Fix data-binding of radio button's value property
- (Issue [#316](https://github.com/angular/angular.js/issues/316))
-- Input with type `password` should no be turned into a readable text field
- ([commit](https://github.com/angular/angular.js/commit/e82e64d57b65d9f3c4f2e8831f30b615a069b7f6))
- (contributed by Konstantin Stepanov)
-- [ng:repeat] should ignore object properties starting with `$`
- ([commit](https://github.com/angular/angular.js/commit/833eb3c84445110dc1dad238120573f08ed8d102))
-- Correctly parse out inlined regexp from the input field's `ng:pattern` attribute.
- ([commit](https://github.com/angular/angular.js/commit/5d43439dbe764a4c7227f51b34a81b044f13901b))
-- $location service in html5 mode should correctly rewrite links that contain nested elements
- ([commit](https://github.com/angular/angular.js/commit/9b85757102fbd44e88d0a3909fdf8b90f191b593))
-
-
-## Breaking Changes:
-
-- the [date] filter now uses 'mediumDate' format if none is specified. This was done to deal with
- browser inconsistencies (each browser used to use different format)
- (Issue [#605](https://github.com/angular/angular.js/issues/605),
- [commit](https://github.com/angular/angular.js/commit/c6c3949b14f4003ecab291243edfca61262f2c3d),
- [commit](https://github.com/angular/angular.js/commit/e175db37c6f52bba4080efeec22a7120a896099e))
-- calling the linker function returned by [angular.compile][compile] doesn't automatically run
- `$digest` on the linked scope any more. This behavior was briefly introduced in 0.10.3 but was
- causing issues and inefficiencies in production apps so we reverted it. See:
- [commit](https://github.com/angular/angular.js/commit/f38010d3a2f457a53798212ef72418637dabe189)
-
-
-
-
-
-# 0.10.3 shattering-heartbeat (2011-10-13) #
-
-## Features:
-
-- New forms, validation, support for HTML5 input widgets. Please check out:
- - [Forms overview](http://docs-next.angularjs.org/guide/dev_guide.forms)
- - [form widget](http://docs-next.angularjs.org/api/angular.widget.form)
- - [input widget](http://docs-next.angularjs.org/api/angular.widget.input)
- - [$formFactory service](http://docs-next.angularjs.org/api/angular.service.$formFactory)
- - [angular.inputType](http://docs-next.angularjs.org/api/angular.inputType)
- - [commit](https://github.com/angular/angular.js/commit/4f78fd692c0ec51241476e6be9a4df06cd62fdd6)
-
-- [ng:repeat] now has element-model affinity, which makes it more friendly to third-party code that
- is not aware of angular's DOM manipulation. This is also the pre-requisite for supporting
- animations.
- ([commit](https://github.com/angular/angular.js/commit/75f11f1fc46c35a28c0905f7316ea6779145e2fb))
-
-
-## Bug Fixes:
-
-- The select widget with [ng:options] directive now correctly displays selected option (regression
- from 0.10.2).
-- Fix for jqLite's removeClass, which under certain circumstances could clobber class names.
- ([commit](https://github.com/angular/angular.js/commit/b96e978178a6acbf048aa6db466ed845e1395445))
-- Other small fixes and documentation improvements.
+
+# 1.3.0-RC.0 sonic-boltification (2014-08-29)
-## Breaking Changes:
-
-- Due to changes in how forms and validation works the following were replaced with new apis:
- - `angular.formatter` - use `angular.inputType` or form's `$createWidget`
- - `angular.validator` - use `angular.inputType` or form's `$createWidget`
- - changes to `` and `