Skip to content

Instantly share code, notes, and snippets.

@igorshubovych
Created June 3, 2015 11:22
Show Gist options
  • Save igorshubovych/253748dcbb77312784ed to your computer and use it in GitHub Desktop.
Save igorshubovych/253748dcbb77312784ed to your computer and use it in GitHub Desktop.
Cumulative AngularJS changelog from 1.2.8 to 1.2.28

1.2.9 enchanted-articulacy (2014-01-15)

Bug Fixes

  • $animate:
    • ensure the final closing timeout respects staggering animations (ed53100a)
    • prevent race conditions for class-based animations when animating on the same CSS class (4aa9df7a, #5588)
    • correctly detect and handle CSS transition changes during class addition and removal (7d5d62da)
    • avoid accidentally matching substrings when resolving the presence of className tokens (524650a4)
  • $http: ensure default headers PUT and POST are different objects (e1cfb195, #5742, #5747, #5764)
  • $rootScope: prevent infinite $digest by checking if asyncQueue is empty when decrementing ttl (2cd09c9f, #2622)

Features

  • $animate:
    • provide support for DOM callbacks (dde1b294)
    • use requestAnimationFrame instead of a timeout to issue a reflow (4ae3184c, #4278, #4225)

Breaking Changes

  • $http: due to e1cfb195, it is now necessary to seperately specify default HTTP headers for PUT, POST and PATCH requests, as these no longer share a single object.

    To migrate your code, follow the example below:

    Before:

    // Will apply to POST, PUT and PATCH methods
    $httpProvider.defaults.headers.post = {
      "X-MY-CSRF-HEADER": "..."
    };
    

    After:

    // POST, PUT and PATCH default headers must be specified seperately,
    // as they do not share data.
    $httpProvider.defaults.headers.post =
      $httpProvider.defaults.headers.put =
      $httpProviders.defaults.headers.patch = {
        "X-MY-CSRF-HEADER": "..."
      };
    

1.2.10 augmented-serendipity (2014-01-24)

Bug Fixes

  • $parse: do not use locals to resolve object properties (f09b6aa5, #5838, #5862)
  • a: don't call preventDefault on click when a SVGAElement has an xlink:href attribute (e0209169, #5896, #5897)
  • input: use Chromium's email validation regexp (79e519fe, #5899, #5924)
  • ngRoute: pipe preceding route param no longer masks ? or * operator (fd6bac7d, #5920)

Features

1.2.11 cryptocurrency-hyperdeflation (2014-02-03)

Bug Fixes

  • $compile: retain CSS classes added in cloneAttachFn on asynchronous directives (5ed721b9, #5439, #5617)
  • $http: update httpBackend to use ActiveXObject on IE8 if necessary (ef210e5e, #5677, #5679)
  • $q: make $q.reject support finally and catch (074b0675, #6048, #6076)
  • filterFilter: don't interpret dots in predicate object fields as paths (339a1658, #6005, #6009)
  • mocks: refactor currentSpec to work w/ Jasmine 2 (95f0bf9b, #5662)
  • ngResource: don't append number to '$' in url param value when encoding URI (ce1f1f97, #6003, #6004)

1.2.12 cauliflower-eradication (2014-02-07)

Bug Fixes

  • $compile: retain CSS classes added in cloneAttachFn on asynchronous directives (5ed721b9, #5439, #5617)
  • $http:
  • $locale: minor grammar amends for the locale locale_lt (95be253f, #6164)
  • $q: make $q.reject support finally and catch (074b0675, #6048, #6076)
  • docs: clarify doc for "args" in $broadcast and $emit (caed2dfe, #6047)
  • filterFilter: don't interpret dots in predicate object fields as paths (339a1658, #6005, #6009)
  • http: make jshint happy (6609e3da)
  • jqLite: trim HTML string in jqLite constructor (36d37c0e, #6053)
  • mocks:
    • rename mock.animate to ngAnimateMock and ensure it contains all test helper code for ngAnimate (4224cd51, #5822, #5917)
    • remove usage of $animate.flushNext in favour of queing (906fdad0)
    • always call functions injected with inject with this set to the current spec (3bf43903, #6102)
    • refactor currentSpec to work w/ Jasmine 2 (95f0bf9b, #5662)
  • ngMock: return false from mock $interval.cancel() when no argument is supplied (dd24c783, #6103)
  • ngResource:

Breaking Changes

The animation mock module has been renamed from mock.animate to ngAnimateMock. In addition to the rename, animations will not block within test code even when ngAnimateMock is used. However, all function calls to $animate will be recorded into $animate.queue and are available within test code to assert animation calls. In addition, $animate.triggerReflow() is now only available when ngAnimateMock is used.

1.2.13 romantic-transclusion (2014-02-14)

Bug Fixes

Features

  • filterFilter: support deeply nested predicate objects (b4eed8ad, #6215)

Breaking Changes

  • $animate:

    • due to 4f84f6b3, ngClass and {{ class }} will now call the setClass animation callback instead of addClass / removeClass when both a addClass/removeClass operation is being executed on the element during the animation.

      Please include the setClass animation callback as well as addClass and removeClass within your JS animations to work with ngClass and {{ class }} directives.

    • due to cf5e463a, Both the $animate:before and $animate:after DOM events must be now registered prior to the $animate operation taking place. The $animate:close event can be registered anytime afterwards.

      DOM callbacks used to fired for each and every animation operation that occurs within the $animate service provided in the ngAnimate module. This may end up slowing down an application if 100s of elements are being inserted into the page. Therefore after this change callbacks are only fired if registered on the element being animated.

  • input:

    • due to a9fcb0d0, input[type=file] will no longer support ngModel. Due to browser support being spotty among target browsers, file inputs cannot be cleanly supported, and even features which technically do work (such as ng-change) work in an inconsistent way depending on the attributes of the form control.

      As a workaround, one can manually listen for change events on file inputs and handle them manually.

1.2.14 feisty-cryokinesis (2014-03-01)

Bug Fixes

  • $animate:
    • delegate down to addClass/removeClass if setClass is not found (18c41af0, #6463)
    • ensure all comment nodes are removed during a leave animation (f4f1f43d, #6403)
    • only block keyframes if a stagger is set to occur (e71e7b6c, #4225)
    • ensure that animateable directives cancel expired leave animations (e9881991, #5886)
    • ensure all animated elements are taken care of during the closing timeout (99720fb5, #6395)
    • fix for TypeError Cannot call method 'querySelectorAll' in cancelChildAnimations (c914cd99, #6205)
  • $http:
  • $parse: reduce false-positives in isElement tests (5fe1f39f, #4805, #5675)
  • input: use ValidityState to determine validity (c2d447e3, #4293, #2144, #4857, #5120, #4945, #5500, #5944)
  • isElement: reduce false-positives in isElement tests (75515852)
  • jqLite:
  • numberFilter: convert all non-finite/non-numbers/non-numeric strings to the empty string (cceb455f, #6188, #6261)
  • $parse: support trailing commas in object & array literals (6b049c74)
  • ngHref: bind ng-href to xlink:href for SVGAElement (2bce71e9, #5904)

v1.2.15 beer-underestimating (2014-03-21)

Bug Fixes

  • $$RAFProvider: check for webkitCancelRequestAnimationFrame (e84da228, #6526)
  • $$rAF: always fallback to a $timeout incase native rAF isn't supported (ee8e4a94, #6654)
  • $compile: support templates with thead and tfoot root elements (ca0ac649, #6289)
  • $http:
  • $rootScope:
  • angular.bootstrap: only allow angular to load once (0d60f8d3, #5863, #5587)
  • jqLite: traverse host property for DocumentFragment in inheritedData() (98d825e1, #6637)
  • ngAnimate: setting classNameFilter disables animation inside ng-if (a41a2a1d, #6539)
  • ngCookie: convert non-string values to string (93d1c95c, #6151, #6220)
  • ngTouch: update workaround for desktop Webkit quirk (01a34f51, #6302)
  • orderBy: support string predicates containing non-ident characters (10d3e1e4, #6143, #6144)
  • select: avoid checking option element selected properties in render (dc149de9, #2448, #5994, #6769)

1.2.16 badger-enumeration (2014-04-03)

Bug Fixes

  • $animate:
    • ensure the CSS driver properly works with SVG elements (38ea5426, #6030)
    • prevent cancellation timestamp from being too far in the future (35d635cb, #6748)
    • run CSS animations before JS animations to avoid style inheritance (0e5106ec, #6675)
  • $parse: mark constant unary minus expressions as constant (6e420ff2, #6932)
  • Scope:
  • filter.ngdoc: Check if "input" variable is defined (a275d539, #6819)
  • input: don't perform HTML5 validation on updated model-value (b2363e31, #6796, #6806)
  • ngClass: handle ngClassOdd/Even affecting the same classes (55fe6d63, #5271)

Features

1.2.17 - quantum disentanglement (2014-06-06)

Bug Fixes

  • $animate:
    • remove the need to add display:block!important for ngShow/ngHide (55b2f0e8, #3813)
    • retain inline styles for property-specific transitions (ad08638c, #7503)
    • ensure class-based animations always perform a DOM operation if skipped (34d07403, #6957)
  • $compile:
    • do not merge attrs that are the same for replace directives (b635903e, #7463)
    • pass transcludeFn down to nested transclude directives (11385060, #7240, #7387)
    • set $isolateScope correctly for sync template directives (5319621a, #6942)
    • reference correct directive name in ctreq error (6bea0591, #7062, #7067)
    • fix regression which affected old jQuery releases (a97a172e)
  • $httpBackend: don't error when JSONP callback is called with no parameter (a7ccb753, #7031)
  • $location:
  • angular.copy: support circular references in the value being copied (5c997209, #7618)
  • grunt-utils: ensure special inline CSS works when angular is not a global (d4231171, #7176)
  • input:
    • fix ReferenceError in event listener (2d7cb14a)
    • don't dirty model when input event is triggered due to a placeholder change (109e5d1d, #2614, #5960)
  • jqLite: use jQuery only if jQuery.fn.on is present (fafcd628)
  • limitTo: do not convert Infinity to NaN (fcdac65a, #6771, #7118)
  • ngAnimate: $animate methods should accept native DOM elements (9227a5db)
  • ngClass:
    • support multiple classes in key (85ce5d0d)
    • handle index changes when an item is unshifted (a4cc9e19, #7256)
  • ngLocale: fix i18n code-generation to support get_vf_, decimals_, and get_wt_ (96a31476)
  • ngSanitize: encode surrogate pair properly (3d0b49c0, #5088, #6911)
  • ngSwitch: properly support case labels with different numbers of transclude fns (32aa4915)
  • numberFilter: fix rounding error edge case (0388eed7, #7453, #7478)

Features

Performance Improvements

  • $interpolate: optimize value stringification (9d4fa33e, #7501)
  • scope: 10x. Share the child scope class. (9ab9bf6b)

1.2.18 ear-extendability (2014-06-13)

Bug Fixes

  • $compile:
    • ensure transclude works at root of templateUrl (fd420c40, #7183, #7772)
    • bound transclusion to correct scope (1382d4e8)
    • don't pass transcludes to non-transclude templateUrl directives (b9ddef2a)
    • don't pass transclude to template of non-transclude directive (eafba9e2)
    • fix nested isolated transclude directives (bb931097, #1809, #7499)
    • pass transcludeFn down to nested transclude directives (8df5f325, #7240, #7387)
  • $injector: report circularity in circular dependency error message (14e797c1, #7500)
  • ngResource: don't convert literal values into Resource objects when isArray is true (f0904cf1, #6314, #7741)

Performance Improvements

  • $compile: move ng-binding class stamping for interpolation into compile phase (81b7e5ab)
  • $http: move xsrf cookie check to after cache check in $http (8b86d363, #7717)
  • isArray: use native Array.isArray (6c14fb1e)
  • jqLite: cache collection length for all methods that work on a single element (6d418ef5)
  • ngBind: set the ng-binding class during compilation instead of linking (1b189027)

1.2.19 precognitive-flashbacks (2014-06-30)

Bug Fixes

  • $compile: bind ng-attr-* even if unbound attribute follows ng-attr-* (ed59370d)
  • $http: should not read statusText on IE<10 when request is aborted (0c80df21)
  • $injector: check if a fn is an array explicitly (67c11b9a, #7904, #2653)
  • $interval: when canceling, use clearInterval from $window instead of global scope. (f780ccfa)
  • $parse:
    • make the window check in ensureSafeObject IE8 friendly (ba62e975)
    • prevent invocation of Function's bind, call and apply (07fa87a8)
    • forbid proto properties in angular expressions (cb713e60)
    • forbid {define,lookup}{Getter,Setter} properties (89ca8597)
    • forbid referencing Object in angular expressions (bc6fb7cc)
  • injector: allow multiple loading of function modules (d71f16e7, #7255)
  • input:
  • jqLite: change expando property to a more unique name (74e1cc68)
  • numberFilter: correctly round fractions despite floating-point arithmetics issues in JS (e5f454c8, #7870, #7878)
  • testabilityPatch: fix invocations of angular.mock.dump (5e944a1c)

Performance Improvements

  • jqLite: don't use reflection to access expandoId (a4faa5cd)

Breaking Changes

You can no longer invoke .bind, .call or .apply on a function in angular expressions. This is to disallow changing the behaviour of existing functions in an unforseen fashion.

The (deprecated) proto propery does not work inside angular expressions anymore.

This prevents the use of {define,lookup}{Getter,Setter} inside angular expressions. If you really need them for some reason, please wrap/bind them to make them less dangerous, then make them available through the scope object.

This prevents the use of Object inside angular expressions. If you need Object.keys, make it accessible in the scope.

1.2.20 accidental-beautification (2014-07-11)

Bug Fixes

  • $http:
    • don't remove content-type header if data is set by request transform (7027844d, #7910)
    • add ability to remove default headers (172a4093, #5784)
  • $location: remove query args when passed in object (a26acb64, #6565)
  • input:
  • parseKeyValue: ignore properties in prototype chain (873acf8f, #8070, #8068)

Features

  • ngAnimate: conditionally allow child animations to run in parallel with parent animations (931789ec, #7946)

1.2.21 wizard-props (2014-07-25)

Bug Fixes

Performance Improvements

  • $compile: only create jqLite object when necessary (71eb1901)
  • $parse: don't use reflective calls in generated functions (cbdf0c2a)
  • forEach: use native for loop instead of forEach for Arrays (492b0cdf)
  • jqLite: expose the low-level jqLite.data/removeData calls (3c46c943)
  • ngBindHtml: move addClass to the compile phase (8eede099, #8261)

1.2.22 finicky-pleasure (2014-08-12)

Bug Fixes

  • $compile: make '='-bindings NaN-aware (0b0acb03, #8553, #8554)
  • $parse: correctly assign expressions who's path is undefined and that use brackets notation (60366c8d, #8039)
  • jqLite: allow triggerHandler() to accept custom event (d262378b, #8469, #8505)
  • ngSanitize: ensure html is a string in htmlParser() (9ee07551, #8417, #8416)
  • select:
    • ensure that at least one option has the selected attribute set (79538afd, #8366, #8429)
    • do not update selected property of an option element on digest with no change event (c2860944, #8221, #7715)

Features

1.2.23 superficial-malady (2014-08-22)

Bug Fixes

  • $location:
    • rewrite relative URI correctly if path==='/' in legacy html5Mode (c6e4defc, #8684)
    • don't call indexOf() of undefined href attribute (74a7afcb, #7721, #8681)
  • $sanitize: sanitize javascript urls with comments (4f387050, #8274)
  • Angular: make Date comparison in equals() NaN-aware (98f60372, #8650, #8715)
  • copy: clear array destinations correctly for non-array sources (888b0f54, #8610, #8702)
  • input:
    • use lowercase method to account for undefined type (456026ef)
    • by default, do not trim input[type=password] values (ebece0bc, #8250, #8230)
  • linky: handle quotes around email addresses (effc98fd, #8520)
  • minErr: encode btstrpd error input to strip angle brackets (aaf9c5e5, #8683)
  • ngHref: remove attribute when empty value instead of ignoring (ed56872b, #2755)

Breaking Changes

Previously, input[type=password] would trim values by default, and would require an explicit ng-trim="false" to disable the trimming behaviour. After this CL, ng-trim no longer affects input[type=password], and will never trim the password value.

Closes #8250 Closes #8230

1.2.24 static-levitation (2014-09-09)

Bug Fixes

  • $browser: detect changes to the browser url that happened in sync (2ece4d03, #6976)
  • $compile:
  • $location:
    • don't call toString on null values (c12e8d46)
    • remove an unused parameter of $location.url (c65796d4)
    • allow numeric location setter arguments (68a09ba7, #7054)
  • $parse: disallow passing Function to Array.sort (b39e1d47)
  • form: ensure concurrent animations use setClass (d7548fdf, #8166)
  • input: check scope.$$phase only on $rootScope (36e6de1d)
  • ngEventDirs:
  • ngRepeat: improve errors for duplicate items (1812af58)
  • numberFilter: format numbers that round to zero as nonnegative (7e02fa07, #8489)
  • orderBy: allow arrayLike objects to be ordered (94b0f2d3, #8944)

Breaking Changes

The blur and focus event fire synchronously, also during DOM operations that remove elements. This lead to errors as the Angular model was not in a consistent state. See this fiddle for a demo.

This change executes the expression of those events using scope.$evalAsync if an $apply is in progress, otherwise keeps the old behavior.

Fixes #4979 Fixes #5945 Closes #8803 Closes #6910 Closes #5402

1.2.25 hypnotic-gesticulation (2014-09-16)

Bug Fixes

  • i18n: fix typo at i18n generation code (1b6d74cc)
  • ngLocale: Regenerate Locale Files (06c76694)
  • select: update option labels when model changes (d89d59f4, #9025)

1.2.26 captivating-disinterest (2014-10-01)

Bug Fixes

  • select: make ctrl.hasOption method consistent (11d2242d, #8761)

1.2.27 prime-factorization (2014-11-20)

Bug Fixes

  • $animate: clear the GCS cache even when no animation is detected (f619d032, #8813)
  • $browser:
  • $http: add missing shortcut methods and missing docs (ec4fe1bc, #9180, #9321)
  • $location:
    • revert erroneous logic and backport refactorings from master (1ee9b4ef, #8492)
    • allow 0 in path() and hash() (f807d7ab)
  • $parse: add quick check for Function constructor in fast path (756640f5)
  • $parse, events: prevent accidental misuse of properties on $event (4d0614fd, #9969)
  • ngMock: $httpBackend should match data containing Date objects correctly (1426b029, #5127)
  • orderBy: sort by identity if no predicate is given (45b896a1, #5847, #4579, #9403)
  • select: ensure the label attribute is updated in Internet Explorer (16833d0f, #9621, #10042)

Performance Improvements

  • orderBy: copy array with slice instead of for loop (409bcb38, #9942)

1.2.28 finnish-disembarkation (2014-12-15)

Bug Fixes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment