v1.0.3
  date: 2018-06-03
  changes:
    - Drop support for Node 0.10 and 0.12.
    - Dependency updates: rimraf, grunt-legacy-log, grunt-legacy-util.
    - Fix race condition with file.mkdir.
v1.0.2
  date: 2018-02-07
  changes:
    - Fix for readYAML error messages.
    - Remove deprecation warning for coffeescript. Pull #1621.
v1.0.1
  date: 2016-04-05
  changes:
    - minor fix for npm issues when installing grunt and grunt-cli at the same time. Pull #1500.
v1.0.0
  date: 2016-04-04
  changes:
    - full list of changes is on http://gruntjs.com, please also see changes from 1.0.0-rc1.
    - if you have a Grunt plugin that includes `grunt` in the `peerDependencies`,
      we recommend tagging with `"grunt": "">= 0.4.0"` and publishing a new version on npm.
    - Prevent async callback from being called multiple times. Pull #1464.
    - Update copyright to jQuery Foundation and remove redundant headers. Fixes #1478.
    - Update glob to 7.0.x. Fixes #1467.
    - Removing duplicate BOM strip code. Pull #1482.
    - Update legacy log and util to 1.0.0.
    - Update to latest cli ~1.2.0.
    - Use grunt-known-options for shared options between Grunt and grunt-cli.
v1.0.0-rc1
  date: 2016-02-11
  changes:
    - full list of changes is on http://gruntjs.com
    - if you have a Grunt plugin that includes `grunt` in the `peerDependencies`,
      we recommend tagging with `"grunt": "">= 0.4.0"`
    - `coffee-script` is upgraded to `~1.10.0` which could incur breaking changes
      when using the language with plugins and Gruntfiles.
    - `nopt` is upgraded to `~3.0.6` which has fixed many issues, including passing
      multiple arguments and dealing with numbers as options. Be aware previously
      `--foo bar` used to pass the value `'bar'` to the option `foo`. It will now
      set the option `foo` to `true` and run the task `bar`.
    -`glob` is upgraded to `~6.0.4` and `minimatch` is upgraded to `~3.0.0`. Results
      are now sorted by default with `grunt.file.expandMapping()`. Pass the
      `nosort: true` option if you don't want the results to be sorted.
    - `lodash` was upgraded to `~4.3.0`. Many changes have occurred. Some of which
      that directly effect Grunt are `grunt.util._.template()` returns a compile
      function and `grunt.util._.flatten` no longer flattens deeply.
      `grunt.util._` is deprecated and we highly encourage you to
      `npm install lodash` and `var _ = require('lodash')` to use `lodash`.
      Please see the lodash changelog for a full list of changes: https://github.com/lodash/lodash/wiki/Changelog
    - `iconv-lite` is upgraded to `~0.4.13` and strips the BOM by default.
    - `js-yaml` is upgraded to `~3.5.2` and may affect `grunt.file.readYAML`.
      We encourage you to please `npm install js-yaml` and use
      `var YAML = require('js-yaml')` directly in case of future deprecations.
    - A file `mode` option can be passed into
      [grunt.file.write()](http://gruntjs.com/api/grunt.file#grunt.file.write).
    - `Done, without errors.` was changed to `Done.` to avoid failing by mistake
      on the word `errors`.
v0.4.5:
  date: 2014-05-12
  changes:
    - Updated rimraf to 2.2.8. Closes gh-1134.
    - Moved grunt.log into separate grunt-legacy-log module.
    - Updated grunt-legacy-util to 0.2.0. Closes gh-971, gh-1129, gh-1118.
    - Added grunt.task.exists method to check if a task exists. Closes gh-1131.
    - Added grunt.config.merge method to deep merge config data. See gh-1039.
    - Fixed symlink issues with 'file.isPathCwd' and 'file.doesPathContain'. Closes gh-1112.
    - Config and util.recurse no longer mangle Buffer instances. See gh-971.
    - Config and util.recurse now enumerate inherited object properties. See gh-1129.
    - Config and util.recurse now throw useful circular reference error. See gh-1118.
    - Warn instead of error when no new tasks found via '.loadTasks' method. Closes gh-1059.
    - Added Windows CI testing. Closes gh-1110.
    - Removed "CONTRIBUTING.md" from .npmignore. Closes gh-1093.
v0.4.4:
  date: 2014-03-12
  changes:
    - Only signal completion of tasks async if grunt.task.start is invoked with `{asyncDone:true}`.
v0.4.3:
  date: 2014-03-07
  changes:
    - When devving Grunt, do "npm install && npm uninstall grunt" (isaacs/npm#3958)
    - Grunt is now tested on Node.js 0.11
    - Extracted internal "util" lib to "grunt-legacy-util" lib
    - task.normalizeMultiTaskFiles now flattens nested "files" arrays. Closes gh-1034.
    - Better error in renameTask if task doesn't exist. Closes gh-1058.
    - Update rimraf to latest version. Closes gh-1043.
    - Empty string "ext" should strip extension. Closes gh-1087.
    - Add expandMapping .extDot option. Can be 'first' or 'last' but defaults to 'first'. Closes gh-979.
    - Add default array for util.spawn optional args. Closes gh-1064.
    - util.spawn "grunt" option now uses proper Node, passes Node exec options. Closes gh-980, gh-981, gh-877.
    - Make all tasks asynchronous to reduce call stack. Closes gh-1026.
    - Fix <%= grunt.task.current.target %> in Multitask files. Closes gh-994.
    - Generalize cli tests, see gh-983, gh-991.
    - --debug option can optionally be Boolean. Closes Gh-983, gh-991.
v0.4.2:
  date: 2013-11-21
  changes:
    - Extract internal "namespace" lib to external "getobject" lib.
    - '"Grunt collections" are now deprecated, use peerDependencies. See "grunt-contrib" 0.8.0 for details.'
    - Fix stdout / stderr issues on Windows. Closes gh-940, gh-921, gh-744, gh-792, gh-644, gh-708.
    - Fix pipe-redirecting on Windows. Closes gh-510.
    - Fixed this.options() in renamed basic tasks. Closes gh-855.
    - Update underscore.string dependency to follow semver. Closes gh-886.
    - Output task options in verbose mode. Closes gh-749.
    - Add file.preserveBOM property. Closes gh-806, gh-937.
    - Test that file methods warn. Closes gh-909.
    - Fixed a few spelling errors in code comments. Closes gh-849.
    - Updated watch, jshint and nodeunit deps. Closes gh-914.
v0.4.1:
  date: 2013-03-13
  changes:
    - Fix path.join thrown errors with expandMapping rename. Closes gh-725.
    - Update copyright date to 2013. Closes gh-660.
    - Remove some side effects from manually requiring Grunt. Closes gh-605.
    - "grunt.log: add formatting support and implicitly cast msg to a string. Closes gh-703."
    - Update js-yaml to version 2. Closes gh-683.
    - The grunt.util.spawn method now falls back to stdout when the `grunt` option is set. Closes gh-691.
    - Making --verbose "Files:" warnings less scary. Closes gh-657.
    - "Fixing typo: the grunt.fatal method now defaults to FATAL_ERROR. Closes gh-656, gh-707."
    - Removed a duplicate line. Closes gh-702.
    - Gruntfile name should no longer be case sensitive. Closes gh-685.
    - The grunt.file.delete method warns and returns false if file doesn't exist. Closes gh-635, gh-714.
    - The grunt.package property is now resolved via require(). Closes gh-704.
    - The grunt.util.spawn method no longer breaks on multibyte stdio. Closes gh-710.
    - Fix "path.join arguments must be strings" error in file.expand/recurse when options.cwd is not set. Closes gh-722.
    - Adding a fairly relevant keyword to package.json (task).
v0.4.0:
  date: 2013-02-18
  changes:
    - Initial release of 0.4.0.
    - See http://gruntjs.com/upgrading-from-0.3-to-0.4 for a list of changes / migration guide.
