## vNEXT
## v0.5.7
* The DDP wire protocol has been redesigned.
* The handshake message is now versioned. This breaks backwards
compatibility between sites with `Meteor.connect()`. Older meteor
apps can not talk to new apps and vice versa. This includes the
`madewith` package, apps using `madewith` must upgrade.
* New [EJSON](http://docs.meteor.com/#ejson) package allows you to use
Dates, Mongo ObjectIDs, and binary data in your collections and
Session variables. You can also add your own custom datatypes.
* Meteor now correctly represents empty documents in Collections.
* There is an informal specification in `packages/livedata/DDP.md`.
* Breaking API changes
* Changed the API for `observe`. Observing with `added`, `changed`
and `removed` callbacks is now unordered; for ordering information
use `addedAt`, `changedAt`, `removedAt`, and `movedTo`. Full
documentation is in the [`observe` docs](http://docs.meteor.com/#observe).
All callers of `observe` need to be updated.
* Changed the API for publish functions that do not return a cursor
(ie functions that call `this.set` and `this.unset`). See the
[`publish` docs](http://docs.meteor.com/#meteor_publish) for the new
API.
* New Features
* Added new [`observeChanges`](http://docs.meteor.com/#observe_changes)
API for keeping track of the contents of a cursor more efficiently.
* There is a new reactive function on subscription handles: `ready()`
returns true when the subscription has received all of its initial
documents.
* Added `Session.setDefault(key, value)` so you can easily provide
initial values for session variables that will not be clobbered on
hot code push.
* You can specify that a collection should use MongoDB ObjectIDs as
its `_id` fields for inserts instead of strings. This allows you to
use Meteor with existing MongoDB databases that have ObjectID
`_id`s. If you do this, you must use `EJSON.equals()` for comparing
equality instead of `===`. See http://docs.meteor.com/#meteor_collection.
* New [`random` package](http://docs.meteor.com/#random) provides
several functions for generating random values. The new
`Random.id()` function is used to provide shorter string IDs for
MongoDB documents. `Meteor.uuid()` is deprecated.
* `Meteor.status()` can return the status `failed` if DDP version
negotiation fails.
* Major Performance Enhancements
* Rewrote subscription duplication detection logic to use a more
efficient algorithm. This significantly reduces CPU usage on the
server during initial page load and when dealing with large amounts
of data.
* Reduced unnecessary MongoDB re-polling of live queries. Meteor no
longer polls for changes on queries that specify `_id` when
updates for a different specific `_id` are processed. This
drastically improves performance when dealing with many
subscriptions and updates to individual objects, such as those
generated by the `accounts-base` package on the `Meteor.users`
collection.
* Upgraded UglifyJS2 to version 2.2.5
Patches contributed by GitHub users awwx and michaelglenadams.
## v0.5.6
* Fix 0.5.5 regression: Minimongo selectors matching subdocuments under arrays
did not work correctly.
* Some Bootstrap icons should have appeared white.
Patches contributed by GitHub user benjaminchelli.
## v0.5.5
* Deprecate `Meteor.autosubscribe`. `Meteor.subscribe` now works within
`Meteor.autorun`.
* Allow access to `Meteor.settings.public` on the client. If the JSON
file you gave to `meteor --settings` includes a field called `public`,
that field will be available on the client as well as the server.
* `@import` works in `less`. Use the `.lessimport` file extension to
make a less file that is ignored by preprocessor so as to avoid double
processing. #203
* Upgrade Fibers to version 1.0.0. The `Fiber` and `Future` symbols are
no longer exposed globally. To use fibers directly you can use:
`var Fiber = __meteor_bootstrap__.require('fibers');` and
`var Future = __meteor_bootstrap__.require('fibers/future');`
* Call version 1.1 of the Twitter API when authenticating with
OAuth. `accounts-twitter` users have until March 5th, 2013 to
upgrade before Twitter disables the old API. #527
* Treat Twitter ids as strings, not numbers, as recommended by
Twitter. #629
* You can now specify the `_id` field of a document passed to `insert`.
Meteor still auto-generates `_id` if it is not present.
* Expose an `invalidated` flag on `Meteor.deps.Context`.
* Populate user record with additional data from Facebook and Google. #664
* Add Facebook token expiration time to `services.facebook.expiresAt`. #576
* Allow piping a password to `meteor deploy` on `stdin`. #623
* Correctly type cast arguments to handlebars helper. #617
* Fix leaked global `userId` symbol.
* Terminate `phantomjs` properly on error when using the `spiderable`
package. #571
* Stop serving non-cachable files with caching headers. #631
* Fix race condition if server restarted between page load and initial
DDP connection. #653
* Resolve issue where login methods sometimes blocked future methods. #555
* Fix `Meteor.http` parsing of JSON responses on Firefox. #553
* Minimongo no longer uses `eval`. #480
* Serve 404 for `/app.manifest`. This allows experimenting with the
upcoming `appcache` smart package. #628
* Upgraded many dependencies, including:
* node.js to version 0.8.18
* jquery-layout to version 1.3.0RC
* Twitter Bootstrap to version 2.3.0
* Less to version 1.3.3
* Uglify to version 2.2.3
* useragent to version 2.0.1
Patches contributed by GitHub users awwx, bminer, bramp, crunchie84,
danawoodman, dbimmler, Ed-von-Schleck, geoffd123, jperl, kevee,
milesmatthias, Primigenus, raix, timhaines, and xenolf.
## v0.5.4
* Fix 0.5.3 regression: `meteor run` could fail on OSX 10.8 if environment
variables such as `DYLD_LIBRARY_PATH` are set.
## v0.5.3
* Add `--settings` argument to `meteor deploy` and `meteor run`. This
allows you to specify deployment-specific information made available
to server code in the variable `Meteor.settings`.
* Support unlimited open tabs in a single browser. Work around the
browser per-hostname connection limit by using randomized hostnames
for deployed apps. #131
* minimongo improvements:
* Allow observing cursors with `skip` or `limit`. #528
* Allow sorting on `dotted.sub.keys`. #533
* Allow querying specific array elements (`foo.1.bar`).
* `$and`, `$or`, and `$nor` no longer accept empty arrays (for consistency
with Mongo)
* Re-rendering a template with Spark no longer reverts changes made by
users to a `preserve`d form element. Instead, the newly rendered value
is only applied if it is different from the previously rendered value.
Additionally, elements with type other than TEXT can now have
reactive values (eg, the labels on submit buttons can now be
reactive). #510 #514 #523 #537 #558
* Support JavaScript RegExp objects in selectors in Collection write
methods on the client, eg `myCollection.remove({foo: /bar/})`. #346
* `meteor` command-line improvements:
* Improve error message when mongod fails to start.
* The `NODE_OPTIONS` environment variable can be used to pass command-line
flags to node (eg, `--debug` or `--debug-brk` to enable the debugger).
* Die with error if an app name is mistakenly passed to `meteor reset`.
* Add support for "offline" access tokens with Google login. #464 #525
* Don't remove `serviceData` fields from previous logins when logging in
with an external service.
* Improve `OAuth1Binding` to allow making authenticated API calls to
OAuth1 providers (eg Twitter). #539
* New login providers automatically work with `{{loginButtons}}` without
needing to edit the `accounts-ui-unstyled` package. #572
* Use `Content-Type: application/json` by default when sending JSON data
with `Meteor.http`.
* Improvements to `jsparse`: hex literals, keywords as property names, ES5 line
continuations, trailing commas in object literals, line numbers in error
messages, decimal literals starting with `.`, regex character classes with
slashes.
* Spark improvements:
* Improve rendering of