docpad
Version:
DocPad is a dynamic static site generator. Write your content as files, or import your content from other external sources. Render the content with plugins. And deploy your static or dynamic website to your favourite hosting provider.
845 lines (624 loc) • 144 kB
Markdown
# History
## v6.83.2 2020 September 8
- If the source path is missing, the correct and useful error is now displayed
- The deprecated `srcPath` is now removed, use `sourcePaths` to write and `getPath('source')` and `getPath('sources')` to read
- Extra debugging for when getting a path fails
- Updated documentation and website links to their new locations
## v6.83.1 2020 August 5
- Add a new `loadPlugins` event for use in the [`docpad-plugintester`](https://github.com/docpad/docpad-plugintester) to make sure all test plugins are properly loaded before `docpadReady` and other events are fired
## v6.83.0 2020 August 5
- Removed superflous option aliases
- `outPath` => `outpath`
- `configPaths`, `configPath`, `c` => `config`
- `environment`, `e` => `env`
- `logLevel` => `log`
- `render --out`, `render -o` => `render --output`
- Removed `offline` option, it can be re-added later if anyone uses it
- Removed the last bits of docpad cloud helper functionality
- Removed skeleton functionality, just clone the repo from github instead
- `docpad skeleton` => `docpad init` (same functionality as selecting no sekleton)
- Removed version check
- Updated dependencies, [base files](https://github.com/bevry/base), and [editions](https://editions.bevry.me) using [boundation](https://github.com/bevry/boundation)
- This will bring a massive performance boost to DocPad, especially with [Caterpillar](https://github.com/bevry/caterpillar) v6 which allows DocPad to disable fetching line information (a very expensive process) for log messages we don't care about
- Minimum required node version changed from `node: >=6` to `node: >=10` to keep up with mandatory ecosystem changes
## v6.82.5 2018 October 1
- Prevent plugin `false` could not be loaded errors, now it will output the path that failed to be found, as expected
## v6.82.4 2018 September 8
- Report the correct error for missing action requests
- Ensure `docpad-plugintester` dependency is latest
## v6.82.3 2018 September 8
- Swapped out promptly for inquirer, which brings back Node v6 support (regression since v6.82.1)
- Close [issue #1093](https://github.com/docpad/docpad/issues/1093)
## v6.82.2 2018 September 8
- Add logging support to the pluginloader to make debugging plugin resolutions easier
- Fixed failures of plugin loading and creation not being reported correctly
- Ensure all dependencies are the latest right now, to help fix false negatives in plugin resolution
- Close [thread #248](https://discuss.bevry.me/t/plugins-broken-in-6-82-1/573?u=balupton)
## v6.82.1 2018 September 7
- Fixed initialising new projects (regression from v6.82.0)
- `docpad init` will now prompt for skeletons (before v6.82.0 this was done via `docpad skeleton`, which was removed)
- Upgraded remaining dependencies
- Upgraded `promptly` dependency from v2 to v3
- Swapped `superagent` for `node-fetch`
- Close [issue #1091](https://github.com/docpad/docpad/issues/1091)
## v6.82.0 2018 September 7
- This release focuses on eliminating the situation where DocPad would initiate with invalid configuration that would then need to be overwritten later, this could cause plugins to not load correctly, invalid configuration persisting, and general instability until the correct configuration was loaded. Now the correct configuration is loaded from commencement.
- Due to new dependency requirements, the minimum supported Node version is now Node version 6, which drops support for Node versions 0.10, 0.12, and 4.
- Closes [issue #1086](https://github.com/docpad/docpad/issues/1086)
- Fix DocPad not working on windows (regression since v6.81.0)
- Closes [issue #1088](https://github.com/docpad/docpad/issues/1088), [thread #240](https://discuss.bevry.me/t/error-cannot-find-module-editions/570?u=balupton), [issue #1085](https://github.com/docpad/docpad/issues/1085), [issue #1084](https://github.com/docpad/docpad/issues/1084)
- Progress indicator will now pause once the action has completed, and resume on new actions, this allows for cleaner shutdowns with no change of ability
- Graceful shutdown is now offered by the `destroyOnExit` configuration option, which uses `process.on('beforeExit', docpad.onBeforeExit)` to destroy DocPad gracefully. This is now possible as we don't have to support Node 0.10. Before we had to do graceful shutdowns in a more complex and manual manner, which resulted in less graceful shutdowns.
- DocPad will now longer output `The action completed successfully.`, as unless an error has displayed, then evidently everything remains successful
- Debug log file will now only be removed if it needs to be replaced with another one
- Fixed `--no-color` CLI argument and `color` configuration option not working
- Closes [issue #938](https://github.com/docpad/docpad/issues/938)
- Color now correctly defaults to environment support
- Also now supports `--colour` and `--no-colour`
- Removed `--prompts` CLI argument and `prompts` config option in favour of the `--progress` CLI argument and `progress` config option (as that is all `prompts` did really)
- The CLI has been rewritten and simplified
- The [`commander` package](https://github.com/tj/commander.js) has been swapped out for the [`cac` package](https://github.com/cacjs/cac)
- Closes [issue #1048](https://github.com/docpad/docpad/issues/1048)
- Customisation of the out path via a CLI option now occurs via `--outPath` to remove ambiguity with `docpad render` out file customisation
- Introduced `--verbose` and `--debug` CLI options, such that one can do `--silent --debug`
- For `docpad render` there is no longer a delay to check for stdin, however if you are using stdin, you must now provide the `--stdin` CLI argument
- `stdin` reading abilities has been moved into the docpad `renderStdin` method, and `render` has gained support for it, as well as support for writing an output file
- Global CLI options are now parsed before DocPad is instantiated, to ensure configuration is correct from initiation, rather than incorrect at instantiation then made correct later
- This removes built in support for customising this, however, no one should be customising global CLI options anyway
- As expected, `consoleSetup` event fires after DocPad is ready, and commands can be added to the `cac` instance in the event options
- CLI commands are executed after this event resolves
- Configuration parsing improvements
- Paths will now be resolved when requested, rather than having their resolutions cached, this results in more reliable path resolution across configuration changes
- Fixed user configuration never actually being applied (regression since v6.80.1)
- Fixed user configuration never loading if it was in your home folder yet you had Dropbox present
- Closes [issue #799](https://github.com/docpad/docpad/issues/799)
- Fixed the loaded user and env configuration debug messages still saying loading
- The method `loadConfigPath` now receives a string as its first argument
- The method `getConfigPath` has been replaced with the new `getPath('config')`
- Leftover DocPad configuration and Plugin configuration will now be correctly removed, before it would linger due to new configuration always being merged into the old, now new configuration swaps out the old
- Plugins are now determined via your project's `package.json` dependencies, rather than scanning the `node_modules` directory
- This new approach is dramatically faster, and also allows us to concisely warn on plugin skips
- Closes [pull request #903](https://github.com/docpad/docpad/pull/903)
- Instantiation has removed unneeded complexity (and paired with the aforementioned CLI changes) this ensures DocPad always results in a valid state
- Removed the configuration option `loggers` that allowed users to swap our caterpillar for something else
- No one used it, nor is it optimal to do so. It just introduced a lot of unnecessary complexity and fragility
- Removed the method `setLoggers`
- Constructing DocPad will now always perform the `load` and `ready` actions
- Removed the construction option `action` that allowed one to override the initiation actions
- Removed the `docpadLoaded` event. It was poorly named, non-optimal, and only used by a single outdated plugin.
- Fixed `docpad clean` not cleaning a custom `outPath`
- DocPad now also outputs which paths were cleaned
- Path cleaning now uses a more robust way of ensuring DocPad doesn't clean a parent outPath
- Closes [issue #727](https://github.com/docpad/docpad/issues/727)
- The Plugin Loader class has been abstracted out to [pluginloader](https://github.com/bevry/pluginloader) and made generic
- Removes `require('docpad').PluginLoader` use `require('@bevry/pluginloader')` instead
- Removes the methods: `loadPluginsIn`, `loadedPlugin`
- Removes the configuration options: `pluginsPaths`, `enableUnlistedPlugins`, `skipUnsupportedPlugins`, `warnUncompiledPrivatePlugins`, `enabledPlugins`
- Closes [issue #391](https://github.com/docpad/docpad/issues/391)
- Removed the `--force` CLI option, it was unnecessary customisation
- Simplified the installer methods: `initGitRepo`, `initNodeModules`, `installNodeModule`, `uninstallNodeModule`
- Removed some long standing deprecations
- Removed `require('docpad').BasePlugin` use `require('docpad-baseplugin')` instead
- Removed `require('docpad').createInstance` use `require('docpad').create` instead
- Removed `docpadUtil.setImmediate` (existed for node 0.8 compat which hasn't been there since DocPad 6.72) use `setImmediate` instead
- Renamed `docpad.inspector` to `docpad.inspect` and removed `docpadUtil.inspect`
- Removed the unstable node.js version warning from DocPad v6.55.6
- Removed leftover `.babelrc` file that was causing everything to be compiled against `es2015` instead of what we desire from our `package.json` configuration
- Updated base files and [editions](https://github.com/bevry/editions) using [boundation](https://github.com/bevry/boundation)
## v6.81.0 2018 August 21
- This release accomplishes the removal of some long standing deprecations, for background reading refer to:
- [Deprecating In-Memory DocPad Importers & Exporters](https://discuss.bevry.me/t/deprecating-in-memory-docpad-importers-exporters/591?u=balupton)
- [Abstract out Server functionality into pluginland](https://github.com/docpad/docpad/issues/1081)
- [Operation Disassemble & Diversify](https://github.com/docpad/docpad/issues/821)
- To maintain static server functionality, install the [`serve` plugin](https://github.com/docpad/docpad-plugin-serve)
- Changes:
- Added `runBefore` and `runAfter` events
- DocPad is now verbose about when it has to perform an mtime change
- Migrations / Removals:
- Progress on [issue #691](https://github.com/docpad/docpad/issues/691) and [issue #391](https://github.com/docpad/docpad/issues/391)
- Abstracted out base plugin into [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin)
- Abstracted out testers into [docpad-plugintester](https://github.com/docpad/docpad-plugintester)
- Close [issue #1081](https://github.com/docpad/docpad/issues/1081)
- Removed the deprecated dynamic server abilities
- Abstracted out the static server abilities into the new [`serve` plugin](https://github.com/docpad/docpad-plugin-serve)
- Removes the properties: `serverExpress`, `serverHttp`, `filesByUrl`, `filesBySelector`, `filesByOutPath`
- Removes the methods: `getServer`, `setServer`, `destroyServer`, `getFileByUrl`, `getFileByRoute`, `getPort`, `getHostname`, `getServerUrl`, `getSimpleServerUrl`, `serverDocument`, `serverMiddlewareHeader`, `serverMiddlewareRouter`, `serverMiddleware404`, `serverMiddleware500`, `server`
- Removes the events: `serverBefore`, `serverExtend`, `serverAfter`
- Removes the options: `databaseCachePath`, `port`, `hostname`, `maxAge`, `serverHttp`, `serverExpress`, `extendServer`, `middlewareStandard`, `middlewareBodyParser`, `middlewareMethodOverride`, `middlewareExpressRouter`, `middleware404`, `middleware500`
- Removes the document properties: `dynamic`
- `templateData.site.url` will now default to an empty string
- Removes the `docpad-server` executable, and the `docpad server` action
- Use `docpad run` with the [`serve` plugin](https://github.com/docpad/docpad-plugin-serve) instead
- Removed the deprecated ability to load uncompiled plugins
- Removed the deprecated DocPad database cache, it never worked well
- Removes the properties: `databaseTempCache`
- Removes the methods: `getDatabaseSafe`
- Removes the `generate` event properties: `cache`
- Removed the deprecated `docpad-compile` executable, no one used it
- Removed leftover `hashKey` property
- New Deprecations:
- `require('docpad').require('testers')` will be removed in an upcoming release
- Use `require('docpad-plugintester')` instead
- A warning will be outputted
- `require('docpad').BasePlugin` will be removed in an upcoming release
- Use `require('docpad-baseplugin')` instead
- No warning will be outputted
## v6.80.9 2018 August 20
- `require('docpad').require('thing')` now only supports the thing `testers`
## v6.80.8 2018 August 19
- Updated base files and [editions](https://github.com/bevry/editions) using [boundation](https://github.com/bevry/boundation)
- Close [issue #1085](https://github.com/docpad/docpad/issues/1085)
## v6.80.7 2018 August 17
- `docpad render` command now behaves as expected, and omission of the filename now shows the error that before failed to report
- Fixes the `ERR_INVALID_ARG_TYPE` error when using stdin
- Closes [issue #1082](https://github.com/docpad/docpad/issues/1082)
- DocPad now shuts down much more gracefully and comprehensively
- Closes [issue #1042](https://github.com/docpad/docpad/issues/1042) and [issue #988](https://github.com/docpad/docpad/issues/988)
- Fixed failures not being represented in the exit code
- Closes [issue #1039](https://github.com/docpad/docpad/issues/1039) and [issue #817](https://github.com/docpad/docpad/issues/817)
- Fixes active requests and active handles from being outputted on shutdown when not needed
- Closes [pull request #1038](https://github.com/docpad/docpad/pull/1038)
- Fixed `ENOTCONN` error from being outputted when not necessary
- Closes [pull request #1029](https://github.com/docpad/docpad/pull/1029) and [issue #1028](https://github.com/docpad/docpad/issues/1028)
- Signal interrupt (ctrl+c) shutdowns now occur more gracefully and set the exit code appropriately
- The first signal interrupt will queue a shutdown
- The second signal interrupt will commence a shutdown immediately
- The third signal interrupt will terminate completely
- Closes [issue #698](https://github.com/docpad/docpad/issues/698)
- Errors that occured before the locale was ready are now reported
- Required precompiling the locale, as such it has moved from `locale/en.cson` to `source/lib/locale/en.coffee`
- Closes [issue #1012](https://github.com/docpad/docpad/issues/1012)
- DocPad shut downs are now quicker by default (1 second quicker)
- Shutdown delay was reduced and made customisable via the new `destroyDelay` configuration option
- Errors will now report their causations thanks to [Errlop](https://github.com/bevry/errlop)
- Closes [issue #1017](https://github.com/docpad/docpad/issues/1017)
- For DocPad users and plugin developers, if you ever need to make timers/timeouts/intervals, please use `docpad.timer` to make and destroy them, that way DocPad can ensure they are cleaned up so they don't prevent shutdown
- `consoleSetup` errors are now reported correctly
- Uncaught exceptions are now fatal errors by default, which will cause DocPad to shut down
- DocPad will now no longer output `The action completed successfully` when something went wrong with the action
- Removed the internal methods `docpad.destroyRegenerateTimer`, `docpad.createRegenerateTimer`, `docpadUtil.wait`, `consoleInterface.destroy`
- Introduced the configuration options `catchOurExceptions`, `catchUncaughtExceptions`, `setExitCodeOnFatal`, `setExitCodeOnError`, `setExitCodeOnRequest`, `destroyDelay`, `destroyOnSignalInterrupt`, `regenerateDelay`, `slowFilesDelay`, `slowPluginsDelay`
- Added locale strings `destroyDocPad`, `destroyedDocPad`
- Updated dependencies
## v6.80.6 2018 July 20
- Abstracted out the document matter parsing into the [docmatter package](https://github.com/bevry/docmatter), which DocPad now consumes
- Closes [issue #389](https://github.com/docpad/docpad/issues/389)
## v6.80.5 2018 July 20
- Progress totals are now accurately reflect item completions
- [progressbar](https://github.com/bevry/progressbar) has been replaced with [progress-title](https://github.com/bevry/progress-title)
- This is far more robust and simple, offers greater and more detailed progress updates (ie. progress updates for file system watching), and even supports progress updates inside DocPad's debug mode
- Fixed progress bar sometimes lingering after a generation
- Closes [issue #1080](https://github.com/docpad/docpad/issues/1080)
- Updated dependencies
## v6.80.4 2018 July 19
- Fixed `Error: extendr only supports extending plain objects, an input was not a plain object` when scaffolding a new project (bug introduced in v6.80.0)
- Closes [issue #1079](https://github.com/docpad/docpad/issues/1079)
## v6.80.3 2018 July 13
- If a task completed, but had already completed earlier, you will now get more detailed debugging information to help you locate the cause
- Updated dependencies
## v6.80.2 2018 July 13
- Fixed `Buffer() is deprecated due to security and usability issues`
- Closes [issue #1078](https://github.com/docpad/docpad/issues/1078)
## v6.80.1 2018 July 13
- Fixed `Cannot set property initialConfig of #<LessPlugin> which has only a getter`
- Closes [issue #1077](https://github.com/docpad/docpad/issues/1077)
## v6.80.0 2018 July 12
- Huge thank you to the sponsors who supported this release. It really did help.
- [Jean-Luc Geering](https://opencollective.com/jlgeering)
- [Nikolas Jeker](https://www.patreon.com/user/creators?u=5900863)
- [Lee Discoll](https://www.patreon.com/user/creators?u=5292556)
- [Ángel González](https://www.patreon.com/Aglezabad)
- [Scott Kempson](https://www.patreon.com/scokem)
- [Leave feedback here](https://github.com/docpad/docpad/issues/1076)
- Removed all non-vital cloud communication
- Closes [issue #1041](https://github.com/docpad/docpad/issues/1041) and [issue #1037](https://github.com/docpad/docpad/issues/1037)
- Removed `docpad-debug` and `docpad-trace` executables, as there are now more modern ways of debugging
- Updated dependencies
- Closes [issue #1063](https://github.com/docpad/docpad/issues/1063)
## v6.80.0-beta 2018 March 7
- This is a beta release, while it is in beta, assume there will be breaking changes
- DocPad is now compiled with CoffeeScript v2
- To use it with CoffeeScript v1 plugins, you will need to set the following environment variable `EDITIONS_SYNTAX_BLACKLIST=esnext`
- You can do this on unix systems by running DocPad like so: `env EDITIONS_SYNTAX_BLACKLIST=esnext docpad run`
- Otherwise you will encounter `TypeError: Class constructor BasePlugin cannot be invoked without 'new'`
- To upgrade your plugin to v2, run [boundation](https://github.com/bevry/boundation) on it
- If you use optional arguments in your plugin or event functions, such as `fn (opts={}, next)` then it must be changed to `fn (opts, next)` as otherwise the completion callback will not be passed, as the `fn.length` will be `0` and [ambi](https://github.com/bevry/ambi) will not be able to detect it is an asynchronous function - [details](https://github.com/bevry/ambi/issues/7)
- Turns out dynamic documents always had invalid content types
- As dynamic documents are a deprecated feature, the setting of the malfunctioning header has been removed, and a warning is now outputted when they are used
- Configuration loading is merged more accurately - [details](https://github.com/docpad/docpad/issues/1045#issuecomment-231649384)
- Logger references are now removed when they are destroyed, and if logging occurs without loggers, the message will be outputted to the console (unless it seems to be a debug message, in which case it will be outputted only if you are not debugging)
- stdin errors changed to log level 6
- Removed DocPad's custom `--profile` handling, as there are now more modern ways of debugging node apps
- Removed `safeMode` option as it was never implemented completely
- Internal `TaskGroup` property on models has been renamed to the more appropriate `createTaskGroup`
- Updated dependencies
- closes
- [issue #1045](https://github.com/docpad/docpad/issues/1045)
- [issue #936](https://github.com/docpad/docpad/issues/936)
- [issue #545](https://github.com/docpad/docpad/issues/545)
- major benefits are offered by these upgrades:
- extendr - object merging is now more reliable
- taskgroup, caterpillar, watchr, scandirectory - huge performance increases and reliability, should be about 50%
- [thread on taskgroup performance](https://github.com/bevry/taskgroup/issues/19)
- caterpillar performance comes from a more streamlined logging process, before there was some redundant effort
- watchr and scandirectory have had a near complete refactoring, as well as implemented the super fast [readdir-cluster](https://github.com/bevry/readdir-cluster)
- these deps were not upgraded:
- express - requires a future DocPad v7 - [details](https://github.com/docpad/docpad/issues/1055)
- promptly - drops support for earlier node versions that DocPad still supports
- superagent - drops support for earlier node versions that DocPad still supports
## v6.79.4 2017 March 31
- Fixed DocPad having stdin errors on exit under certain circumstances
- Thanks to [Craig Smith](https://github.com/craigsssmith) for [issue #1049](https://github.com/docpad/docpad/pull/1049)
- Updated base files
## v6.79.3 2017 March 29
- Fix the `this.emitSerial` errors when running plugin tests
- This was due to event-emitter-grouped v2.5.0 busting joe v1.6.0 which we pinned, so pinned joe to `~1.6.1` and joe-reporter-console to `~1.2.1`
## v6.79.2 2017 March 28
- Fix `out/lib/testers.js` being omitted in published package (regression since v6.79.1)
- Without this file plugin tests break, so this fixes that
- Fix `src/` being included in published package (regression since v6.79.1)
- This reduces package size once again
- Thanks to [Sebastian Domagała](https://github.com/sdomagala) for his assistance
## v6.79.1 2017 March 28
- Updated base files
- This prefixes DocPad's own `./package.json` scripts with `our:` to prevent npm v4's use of `prepare` from causing DocPad installs to fail under development conditions
- Thanks to [Sebastian Domagała](https://github.com/sdomagala) for his assistance
## v6.79.0 2016 September 27
- Bumped coffee-script dependency version
- Fixed possible `docpad not defined` issue on `loadLocale`
## v6.78.6 2016 June 27
- Set joe version to fixed 1.6.0 and event-emitter-grouped to 2.4.3 to handle issue 1047
## v6.78.5 2016 June 15
- Recompiled with latest dev dependencies
## v6.78.5 2015 September 26
- Fixed missing `next` parameter for methods `fixNodePackageVersions`, `installNodeModule` and `uninstallNodeModule`.
## v6.78.4 2015 September 16
- Fixed `path option is deprecated` error when cloning a skeleton
- Thanks to [Gabriel Ignisca](https://github.com/16nsk) for [issue #1016](https://github.com/docpad/docpad/issues/1016)
- Changed donation message, maybe this one will be more successful
- Updated dev dependencies
- Updated base files
## v6.78.3 2015 August 21
- Consolidated server address code
- DocPad will now output both the original server address and the simplified server address if they differ, background:
- https://github.com/docpad/docpad/commit/2b9f567870f7b396e6b0f680a8aca92ea7bc45b6#commitcomment-12824451
- https://github.com/docpad/docpad/issues/911
## v6.78.2 2015 August 21
- Profilers must now be specified by `DOCPAD_PROFILER` variable
- Prevent waiting handles from being outputted in silent mode (prevents a common render test failure)
- Use [hostenv](https://github.com/bevry/hostenv) for `PORT` and `HOSTNAME` variables
- Listen to `0.0.0.0` hostname by default (will be outputted as `localhost`)
- Updated dependencies
- Updated base files
## v6.78.1 2015 March 20
- Fixed `queryEngine` is undefined error (regression since v6.78.1)
- Thanks to [wlbrough](https://github.com/wlbrough) for [issue #943](https://github.com/docpad/docpad/issues/943)
## v6.78.0 2015 March 18
- You can now `module.exports = function(docpad){ return {/* your docpad configuration */} }`
## v6.77.1 2015 March 18
- Better error reporting when a custom collection is invalid
- Thanks to [Simon Smithies](https://github.com/simonsmithies) for [issue #875](https://github.com/docpad/docpad/issues/875)
## v6.77.0 2015 March 18
- Replaced `lodash` with `underscore`
- Backbone (our dependency) already includes `underscore`, so makes sense to reduce our footprint
- Removed these deprecated exports:
- `require('docpad').DocPad`
- `require('docpad').Backbone`
- `require('docpad').queryEngine`
- `docpadInstance.View`
- Added `progress` configuration option that you can use to disable progress bars
## v6.76.1 2015 March 17
- Fixed testers wanting chai (regression since v6.76.0)
## v6.76.0 2015 March 17
- Regenerate timer is now closed correctly (regression since v6.48.0)
- Close stdin after destroy when using the console interface
- Output anything we could be waiting for after destroy using the console interface
- Rather than including all of lodash, we now just include the modules we need
- Updated profiling for the latest tools
- Quicker execution of certain spawned commands
- Updated dependencies
## v6.75.2 2015 March 16
- Better error handling when updating user config fails
- Better error messages when CSON handling fails
## v6.75.1 2015 March 16
- Better input availability detection
## v6.75.0 2015 March 16
- Better CSON config and meta parsing
- Updated dependencies
## v6.74.0 2015 March 14
- Updated for latest exchange and docpad package info retrieval
- Fixed `--profile`
- Thanks to [Zearin](https://github.com/Zearin), [fengtingzhang](https://github.com/fengtingzhang) for [issue #937](https://github.com/docpad/docpad/issues/937)
- Fixed `--skeleton` option not working
- Fixes [issue #942](https://github.com/docpad/docpad/issues/942)
- Removed `skeleton` command, use the `init` or `run` commands instead
- Removed `engines` from `init`'s `package.json`
- Updated dependencies
- Updated most dependencies from `~` to `^`
- Released live: https://plus.google.com/events/cc41smt4r608vj8fdrjp7a1jqbg
## v6.73.5 2015 February 23
- Fixed `TypeError: undefined is not a function` under some circumstances
- Thanks to [Dimitar Kolev-Dick](https://github.com/dimitarkolev) and [Lisa Williams](https://github.com/Lisa-Williams) for [issue #935](https://github.com/docpad/docpad/issues/935)
## v6.73.4 2015 February 23
- Only display prompts and check for updates when we are in an interactive terminal by default
## v6.73.3 2015 February 23
- Improved debugging of TaskGroups
- Fixed crash when MAC was not available (regression since v6.72.0)
- Fixes Travis CI problems, hopefully fixes Heroku Problems
- Fixed changed log level configuration not applying in subsequent configuration updates (regression since always?)
- Fixes warnings appearing in CLI render commands (regression since always?)
- Better `create` and `createInstance` methods (inspired from TaskGroup's)
- Better expectation tests that now show differences
- Fixed CLI tests using old DocPad (they now use `--global` flag) (regression since always?)
- Updated dependencies
## v6.73.2 2015 February 20
- If an error occurs during the initialisation actions, DocPad will only suicide if there was no completion callback to handle the error
- More robust way of writing errors in case `stderr` doesn't exist or isn't writeable
## v6.73.1 2015 February 20
- Fixed DocPad creation via API returning `2` (regression since v6.71.0)
- For some reason, having `DocPad::inspect` defined broke it, as such `DocPad::inspect` is now `DocPad::inspector`
- Fixed double binding of some prototype methods
- Simpler `DocPad.create` and `DocPad.createInstance` functions
- The `--no-color` option now works (introduced in v6.71.0)
## v6.73.0 2015 February 20
- Got rid of the `main.coffee`/`main.js` file, our new main file is the DocPad class itself `lib/docpad`
- Updated dependencies
## v6.72.1 2015 February 20
- Fixed possibility of DocPad not exiting on exiting on a error
- More robust error writing
- jshint compliance
## v6.72.0 2015 February 20
- Fixed fetching of skeletons (regression since v6.70.0)
- Thanks to [Kasper Souren](https://github.com/guaka) for [issue #930](https://github.com/docpad/docpad/issues/930)
- Added the ability to uncompiled warn warnings off for private plugins by setting `warnUncompiledPrivatePlugins` to `false`
- Thanks to [Dimitar Kolev-Dick](https://github.com/dimitarkolev) for [issue #928](https://github.com/docpad/docpad/issues/928)
- Added better warnings when loading a plugin fails for whatever reason
- Better reporting of warnings
- coffeelint compliance
- Updated dependencies
## v6.71.1 2015 February 19
- Output `127.0.0.1` as the hostname when IPv6 addresses `::` and `::1` are reported
- Output `127.0.0.1` as the hostname instead of `localhost` when `0.0.0.0` is reported
## v6.71.0 2015 February 19
- Updated `docpad-debug` to work with latest debugging tools
- DocPad will now output most things with colours when it is able to
- Thanks to [Zearin](https://github.com/Zearin) for [pull request #834](https://github.com/docpad/docpad/pull/834)
- Fixed `TypeError: Object #<CSON> has no method 'parseCSON'` error when parsing user configuration (regression from v6.70.0)
- Thanks to [Kasper Souren](https://github.com/guaka) for [pull request #921](https://github.com/docpad/docpad/issues/921) and [issue #917](https://github.com/docpad/docpad/issues/917)
- Fixed secondary URL redirect
- Thanks to [shawnzhu](https://github.com/shawnzhu) for [pull request #905](https://github.com/docpad/docpad/pull/905) and [issue #850](https://github.com/docpad/docpad/issues/850)
- Fixed incorrect writing of user configuration (regression from v6.70.0)
- Thanks to [Pavan Gupta](https://github.com/pavangupta) for [pull request #922](https://github.com/docpad/docpad/pull/922)
- Re-added support for uncompiled plugins (regression from v6.70.0)
- Thanks to [Zeno Rocha](https://github.com/zenorocha) for [issue #918](https://github.com/docpad/docpad/issues/918)
- When an error occurs with the `docpad.action` API and a completion callback is specified, the error will no longer be logged
- Fixed reporting of errors when something goes wrong when initialising a selected skeleton
- Fixed potential crash under random circumstances caused by 3rd party dependency
- Also removed the [longjohn] package as a precaution for when caterpillar can't fix the issue
- More information on [issue #926](https://github.com/docpad/docpad/issues/926)
## v6.70.1 2015 February 12
- We now output `localhost` instead of `0.0.0.0`
- Thanks to [paleite](https://github.com/paleite) and [Stephen Brown II](https://github.com/StephenBrown2) for [issue #911](https://github.com/docpad/docpad/issues/911)
## v6.70.0 2015 February 12
- Added support for Node 0.12 and IO.js
- Dropped support for Node 0.8. Minimum supported Node version is now 0.10.
- CSON has been updated to v2, this means that your `docpad.cson` files will no longer work with functions
- If you have functions inside your `docpad.cson` file:
- Rename `docpad.cson` to `docpad.coffee`
- Export your configuration inside `docpad.coffee` by doing: `module.exports = {your configuration data}`
- [Example `docpad.coffee` file.](https://docpad.bevry.me/config)
- Updated dependencies
## v6.69.2 2014 December 17
- Better id deletion when cloning a model
- Thanks to [Nathan Friedly](https://github.com/nfriedly) for [pull request #893](https://github.com/docpad/docpad/pull/893)
- Fixed incorrect `layoutSelector` undefined error when DocPad can't find your layout
- Thanks to [Nathan Friedly](https://github.com/nfriedly) for [pull request #897](https://github.com/docpad/docpad/pull/897)
- Updated dependencies
## v6.69.1 2014 September 18
- Fixed a TOS issue
- Thanks to [plfannery](https://github.com/pflannery) for [pull request #884](https://github.com/docpad/docpad/pull/884)
- Updated dependencies
## v6.69.0 2014 June 16
- Updated dependencies
## v6.68.1 2014 June 5
- [longjohn](https://github.com/mattinsler/longjohn) is now an optional dependency, as for some people it was not loading, also made it use ~ instead of ^ as maybe those users are using old npm versions
## v6.68.0 2014 June 1
- File and document messages are now localised
- Better error messages when parsing the meta data fails
- Will now output an error when a document or file model was instantiated outside of `docpad.createModel` as instantiating directly will mean they will be missing necessary properties and events
## v6.67.0 2014 June 1
- We now output the link to the bug report guide with error messages
- We now include [longjohn](https://github.com/mattinsler/longjohn) in debug mode for better stack traces
## v6.66.0 2014 May 23
- Meta header separators can now contain additional characters, providing there is still a character that repeats at least 3 times
This allows you to do things like:
```
/* ---
works: "yes"
--- */
window.alert("<%- @document.works %>")
```
Or even more concisely:
```
/***
works: "yes"
***/
window.alert("<%- @document.works %>")
```
Big thanks to [pflannery](https://github.com/pflannery) for pushing for this with [#814](https://github.com/bevry/docpad/pull/814)
## v6.65.0 2014 May 17
- Independent rendering (including layout rendering) now occurs on a clone, allowing independent renderings on the same file to occur at the same time
- This fixes an issue where a recursive render on a file will cause a stalemate
- More detailed errors when something goes wrong with rendering a file
- Deprecated `docpad.cloneModel(document)`, you can now use `document.clone()` safely
- Deprecated `apply` option for `document.render`, now use `document.clone().action('render')` instead
- Fixed broken `docpad.addModel` and `docpad.addModels` (broken since their introduction in v6.55.0)
- Updated dependencies
## v6.64.3 2014 May 4
- Added donation plea for [bevry/meta#3](http://github.com/bevry/meta/issues/3)
## v6.64.2 2014 April 21
- Updated dependencies
## v6.64.1 2014 April 21
- Fixed cache file not being correctly (regression since v6.63.7)
- Thanks to [Ivan Klimchuk](https://github.com/Alroniks) for [pull request #825](https://github.com/bevry/docpad/pull/825)
## v6.64.0 2014 March 4
- Fixed a possible issue with `@include` template helper not working when the `renderPasses` config option changes
- DocPad will now auto-set the `site.url` template data to the calculated site URL (e.g. `http://localhost:9778`) if it is falsey
- This allows you to do `environments: development: templateData: site: url: false` inside your DocPad configuration files, to always use the correct site url regardless of environment
## v6.63.8 2014 February 26
- Fixed "Object #<DocPad> has no method err" (regression since v6.37.7)
## v6.63.7 2014 February 21
- Fixed IE9 and below not understanding the charset we send
- Thanks to [Eric Vantillard](https://github.com/evantill) for [issue #801](https://github.com/bevry/docpad/pull/801)
- Better debugging for invalid watch states
- For more information see [issue #792](https://github.com/bevry/docpad/issues/792)
- Fixed DocPad failing to serve files after the initial generation once the docpad configuration file has been modified
- Thanks to [Michael Williams](https://github.com/ahdinosaur) for [issue #811](https://github.com/bevry/docpad/issues/811)
- Updated dependencies
## v6.63.6 2014 February 18
- Fixed npm v1.4.3 from using `^` instead of `~` when installing and updating docpad plugins
## v6.63.5 2014 February 18
- Fixed invalid TaskGroup `~3.3.7n` dependency version (regression since v6.63.1)
- Thanks to [Jens Wilke](https://github.com/cruftex) for [issue #806](https://github.com/bevry/docpad/issues/806)
## v6.63.4 2014 February 18
- Don't use HTTPS URLs for fetching latest version and exchange data (as HTTPS URLs may not always be available)
- Updated dependencies
## v6.63.3 2014 January 30
- Regenerate every options are now customisable via `regenerateEveryOptions`
- Regenerate every options now default to `partial:false, populate:true`
- Before there were no defaults, meaning that they always did a non populating, partial, regeneration (regression exposed due to the fix in v6.61.0)
## v6.63.2 2014 January 30
- Don't show generate success message if an error occurred
## v6.63.1 2014 January 30
- Fixed gobbling of error messages during `contextualizeFiles`, `renderFiles` or `writeFiles` (regression since v6.59.2)
- Thanks to [Rob Loach](https://github.com/RobLoach), [Nathan Rijksen](https://github.com/Naatan) for [issue #784](https://github.com/bevry/docpad/issues/784)
- All task groups and tasks we define are now named (makes for easier debugging)
- Updated dependencies
## v6.63.0 2014 January 28
- Disabled database writing by default (set `databaseCache` to `false` instead of `'write"` by default)
- We never used it, still many nuances with reading to figure out, so it doesn't make sense incurring the performance penalty of the write while there is no use for it
- Enable writing manually by setting `databaseCache` to `"write"`
- Enable writing and reading manually by setting `databaseCache` to `true`
## v6.62.0 2014 January 28
- Stylesheets are more efficiently generated
- Files with the `outExtension: 'css'` are now the only ones included in the `stylesheet` collection
- Stylesheets no longer have `referencesOthers` to `true` on them by default, this is now left up to plugin authors to do
- Thanks to [Dimitar Kolev-Dick](https://github.com/dimitarkolev) for [issue #789](https://github.com/bevry/docpad/issues/789)
## v6.61.0 2014 January 27
- Fixed regeneration always regenerating everything (regression since v6.58.0)
- Thanks to [Dimitar Kolev-Dick](https://github.com/dimitarkolev), [Marcus Stong](https://github.com/stongo) for [issue #785](https://github.com/bevry/docpad/issues/785)
## v6.60.4 2014 January 27
- Implemented `304 Not Modified` header
- Fixed some `date` and `stat` errors (regression since v6.60.0)
- Thanks to [Anton Wilhelm](https://github.com/timaschew) for [pull request #787](https://github.com/bevry/docpad/pull/787)
- Thanks to [Ivan Klimchuk](https://github.com/Alroniks) for [pull request #781](https://github.com/bevry/docpad/pull/781)
## v6.60.3 2014 January 16
- Fixed `toUTCString` errors (regression since v6.60.0)
## v6.60.2 2014 January 16
- Don't include `--save-dev` when installing plugins (regression since v6.59.3)
## v6.60.1 2014 January 16
- Updated dependencies
## v6.60.0 2014 January 16
- Added `etag`, `cache-control`, `last-modified`, `date`, and `charset` headers
- Thanks to [Marcus Stong](https://github.com/stongo) for [issue #740](https://github.com/bevry/docpad/issues/740)
## v6.59.6 2013 December 20
- Non-CoffeeScript plugin testers can now rejoice, you can now easily extend the tester classes by using `TesterClass.extend({})`
- Thanks to the [extendonclass](https://github.com/bevry/extendonclass) module
## v6.59.5 2013 December 20
- Non-CoffeeScript plugin authors can now rejoice, you can now easily extend the `BasePlugin` class by using `var MyPlugin = BasePlugin.extend({})`
- Thanks to the [extendonclass](https://github.com/bevry/extendonclass) module
## v6.59.4 2013 December 20
- Added a warning when trying to set the `id` attribute manually
- Thanks to [Piotr Zduniak](https://github.com/pzduniak) for [issue #742](https://github.com/bevry/docpad/issues/742)
## v6.59.3 2013 December 20
- Fixed uninstalled dev dependency plugins (e.g. livereload), from being reinstalled on the next install
- Thanks to [Alan Languirand](https://github.com/alanguir), [Eduán Lávaque](https://github.com/Greduan) for [issue #744](https://github.com/bevry/docpad/issues/744)
## v6.59.2 2013 December 19
- More reliable delay of requests while the initial generation is still performing
- Removed the deprecated `writeSource` meta data header, `writeSource` is now only available via the API usage
- Added new `generated` event that will fire once the initial generation has completed
## v6.59.1 2013 December 19
- Fixed listening on heroku (regression since v6.58.2)
## v6.59.0 2013 December 19
- Removed the deprecated `ensureFile`, `ensureDocument`, `ensureModel`/`ensureFileOrDocument` methods, use `addFile`, `addDocument`, and `addModel` instead
- Improved watching, should hopefully fix [#738](https://github.com/bevry/docpad/issues/738), [#742](https://github.com/bevry/docpad/issues/742), [#739](https://github.com/bevry/docpad/issues/739)
- Updated dependencies
## v6.58.2 2013 December 18
- Can now change the hostname that we listen to via the `hostname` configuration option
- Thanks to [Dario](https://github.com/radiodario) for [pull request #737](https://github.com/bevry/docpad/pull/737)
- Updated dependencies
## v6.58.1 2013 December 17
- Output of change detections is now an `info` log level, instead of `debug`, allowing you to see what is going on by default
- Fixed regenerations triggered by changed files not working (regression since v6.58.0)
- Thanks to [Fryderyk Dziarmagowski](https://github.com/freddix), [Anton Poleshchuk](https://github.com/apoleshchuk), [Eduán Lávaque](https://github.com/Greduan) for [issue #738](https://github.com/bevry/docpad/issues/738)
## v6.58.0 2013 December 16
- Deprecated and removed the `parseBefore` and `parseAfter` events
- Files are now parsed as they are loaded in, rather than only when they reach the generation cycle
- See [issue #736](https://github.com/bevry/docpad/issues/736) for discussion and upgrade options
- Dynamic documents now have access to templateData that plugins have extended (regression since always)
- Dynamic documents now go through the standard generation process
- Thanks to [Steve McArthur](https://github.com/SteveMcArthur), [Marcus Stong](https://github.com/stongo) for [docpad/docpad-plugin-feedr#5](https://github.com/docpad/docpad-plugin-feedr/issues/5)
- Documents that want to be rendered, but not written, are now rendered (possible regression since v6.55.0)
- Thanks to [pflannery](https://github.com/pflannery) for [issue #734](https://github.com/bevry/docpad/issues/734)
- Moved the missing layout error check from contextualize step to render step, as the layout may not be there if we are still loading documents
## v6.57.3 2013 December 16
- Contextualize will now also be called during a file's `load` action to help injected files being contextualized
## v6.57.2 2013 December 12
- Updated dependencies
## v6.57.1 2013 December 9
- Fixed delay of requests not working when documents are still performing their initial generation (regression since v6.57.0)
## v6.57.0 2013 December 3
- Improved the caching of on-the-fly collections and fixed the name setting of collections
- Possible b/c break: `DocPad::getCollections()` will now return an `[collection, ...]` array, rather than an `{name: collection}` object. To get the name of a collection, you should now do `collection.options.name`
## v6.56.0 2013 November 29
- The database cache introduced in v6.55.0 is set to `write` (write-only) by default now until we fix out the kinks
- To enable read mode, use the `--cache` command line option when running DocPad, or set the `databaseCache` configuration option to `true`
## v6.55.9 2013 November 29
- Properly fixed v6.55.3 issue while maintaining node.js v0.8 compatibility
- Thanks to [Michael Duane Mooring](https://github.com/mikeumus), [pflannery](https://github.com/pflannery) for [issue #717](https://github.com/bevry/docpad/issues/717)
## v6.55.8 2013 November 28
- Fixed Node.js v0.8 compatibility (regression since v6.55.3)
## v6.55.7 2013 November 28
- ??? was already published...
## v6.55.6 2013 November 28
- Output a huge warning banner when running DocPad against an unstable version of Node.js
## v6.55.5 2013 November 27
- Fixed `Configuration changes require a`docpad clean`to regenerate files` (regression since v6.55.0)
- Thanks to [Christo Buschek](https://github.com/crito) for [issue #718](https://github.com/bevry/docpad/issues/718)
## v6.55.4 2013 November 27
- Fixed `Offline changes to layout do not re-render the layout's children` (regression since v6.55.0)
- Removed `layoutId` internal file attribute in favour of new `layoutRelativePath` internal file attribute
- Added `hasLayout` special collection
- `docpad update` will now also perform `docpad clean` for you to ensure the database cache is cleaned between versions
## v6.55.3 2013 November 27
- Fixed possible "(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral." error under certain circumstances (regression since always?)
- Thanks to [Michael Duane Mooring](https://github.com/mikeumus) for [issue #717](https://github.com/bevry/docpad/issues/717)
## v6.55.2 2013 November 27
- Fixed `Changes to layout do not re-render the layout's children` (regression since v6.55.0)
- Thanks to [Urs Hunkler](https://github.com/uhunkler) for [issue #716](https://github.com/bevry/docpad/issues/716)
## v6.55.1 2013 November 26
- Fixed `databaseCache` config property (introduced in v6.55.0)
## v6.55.0 2013 November 26
- DocPad will now cache the database to `.docpad.db` after generation, and load it up upon initial generation
- This removes the huge performance burden of the initial scan, load, parse, render
- The `writeSource` attribute can now be considered under review for deprecation
- This can be turned off by setting the configuration option `databaseCache` to `false`
- You can customise the path of the database cache file via the `databaseCachePath` configuration option
- The database cache will be cleared on `docpad clean`
- NOTE: If you remove files when DocPad is shut down, DocPad will not pick it up the changes, to fix do one of the following:
- Run `docpad clean` to reset the database cache
- Disable the database cache by setting the `databaseCache` configuration option to `false`
- Or just make sure when you are working on your DocPad site, you have `docpad run` running
- This potential problem is planned on being fixed in a later version, for now an immediate release with these huge performance gains far outweigh a delayed release with the fix
- DocPad will now only re-render things that have explicitly changed or not been written yet
- This removes a huge performance burden when pulling in virtual documents
- To use this when importing documents, make sure you set the `mtime` attribute
- Added `--silent` option that sets `prompts: false` for disabling all prompts
- Removed `-s` option that was an alias for `--skeleton` to avoid confusion
- Thanks to [Christo Buschek](https://github.com/crito) for [issue #715](https://github.com/bevry/docpad/issues/715)
- The following changes have been made to the `DocPad` prototype
- `addModel(model, opts)` was added
- `addModels(models, opts)` was added
- `createModels(models, opts)` was added
- `ensureModel(model, opts)` is now the same as `createModel(model, opts)`
- `generatePrepare`, `generateLoad`, `generateRender`, `generatePostpare`, `populateCollections` were consolidated into `generate