## vNEXT ## v0.5.2 * Fix 0.5.1 regression: Cursor `observe` works during server startup. #507 ## v0.5.1 * Speed up server-side subscription handling by avoiding redundant work when the same Mongo query is observed multiple times concurrently (eg, by multiple users subscribing to the same subscription), and by using a simpler "unordered" algorithm. * Meteor now waits to invoke method callbacks until all the data written by the method is available in the local cache. This way, method callbacks can see the full effects of their writes. This includes the callbacks passed to `Meteor.call` and `Meteor.apply`, as well as to the `Meteor.Collection` `insert`/`update`/`remove` methods. If you want to process the method's result as soon as it arrives from the server, even if the method's writes are not available yet, you can now specify an `onResultReceived` callback to `Meteor.apply`. * Rework latency compensation to show server data changes sooner. Previously, as long as any method calls were in progress, Meteor would buffer all data changes sent from the server until all methods finished. Meteor now only buffers writes to documents written by client stubs, and applies the writes as soon as all methods that wrote that document have finished. * `Meteor.userLoaded()` and `{{currentUserLoaded}}` have been removed. Previously, during the login process on the client, `Meteor.userId()` could be set but the document at `Meteor.user()` could be incomplete. Meteor provided the function `Meteor.userLoaded()` to differentiate between these states. Now, this in-between state does not occur: when a user logs in, `Meteor.userId()` only is set once `Meteor.user()` is fully loaded. * New reactive function `Meteor.loggingIn()` and template helper `{{loggingIn}}`; they are true whenever some login method is in progress. `accounts-ui` now uses this to show an animation during login. * The `sass` CSS preprocessor package has been removed. It was based on an unmaintained NPM module which did not implement recent versions of the Sass language and had no error handling. Consider using the `less` or `stylus` packages instead. #143 * `Meteor.setPassword` is now called `Accounts.setPassword`, matching the documentation and original intention. #454 * Passing the `wait` option to `Meteor.apply` now waits for all in-progress method calls to finish before sending the method, instead of only guaranteeing that its callback occurs after the callbacks of in-progress methods. * New function `Accounts.callLoginMethod` which should be used to call custom login handlers (such as those registered with `Accounts.registerLoginHandler`). * The callbacks for `Meteor.loginWithToken` and `Accounts.createUser` now match the other login callbacks: they are called with error on error or with no arguments on success. * Fix bug where method calls could be dropped during a brief disconnection. #339 * Prevent running the `meteor` command-line tool and server on unsupported Node versions. * Fix Minimongo query bug with nested objects. #455 * In `accounts-ui`, stop page layout from changing during login. * Use `path.join` instead of `/` in paths (helpful for the unofficial Windows port) #303 * The `spiderable` package serves pages to [`facebookexternalhit`](https://www.facebook.com/externalhit_uatext.php) #411 * Fix error on Firefox with DOM Storage disabled. * Avoid invalidating listeners if setUserId is called with current value. * Upgrade many dependencies, including: * MongoDB 2.2.1 (from 2.2.0) * underscore 1.4.2 (from 1.3.3) * bootstrap 2.2.1 (from 2.1.1) * jQuery 1.8.2 (from 1.7.2) * less 1.3.1 (from 1.3.0) * stylus 0.30.1 (from 0.29.0) * coffee-script 1.4.0 (from 1.3.3) Patches contributed by GitHub users ayal, dandv, possibilities, TomWij, tmeasday, and workmad3. ## v0.5.0 * This release introduces Meteor Accounts, a full-featured auth system that supports - fine-grained user-based control over database reads and writes - federated login with any OAuth provider (with built-in support for Facebook, GitHub, Google, Twitter, and Weibo) - secure password login - email validation and password recovery - an optional set of UI widgets implementing standard login/signup/password change/logout flows When you upgrade to Meteor 0.5.0, existing apps will lose the ability to write to the database from the client. To restore this, either: - configure each of your collections with [`collection.allow`](http://docs.meteor.com/#allow) and [`collection.deny`](http://docs.meteor.com/#deny) calls to specify which users can perform which write operations, or - add the `insecure` smart package (which is included in new apps by default) to restore the old behavior where anyone can write to any collection which has not been configured with `allow` or `deny` For more information on Meteor Accounts, see http://docs.meteor.com/#dataandsecurity and http://docs.meteor.com/#accounts_api * The new function `Meteor.autorun` allows you run any code in a reactive context. See http://docs.meteor.com/#meteor_autorun * Arrays and objects can now be stored in the `Session`; mutating the value you retrieve with `Session.get` does not affect the value in the session. * On the client, `Meteor.apply` takes a new `wait` option, which ensures that no further method calls are sent to the server until this method is finished; it is used for login and logout methods in order to keep the user ID well-defined. You can also specifiy an `onReconnect` handler which is run when re-establishing a connection; Meteor Accounts uses this to log back in on reconnect. * Meteor now provides a compatible replacement for the DOM `localStorage` facility that works in IE7, in the `localstorage-polyfill` smart package. * Meteor now packages the D3 library for manipulating documents based on data in a smart package called `d3`. * `Meteor.Collection` now takes its optional `manager` argument (used to associate a collection with a server you've connected to with `Meteor.connect`) as a named option. (The old call syntax continues to work for now.) * Fix a bug where trying to immediately resubscribe to a record set after unsubscribing could fail silently. * Better error handling for failed Mongo writes from inside methods; previously, errors here could cause clients to stop processing data from the server. Patches contributed by GitHub users bradens, dandv, dybskiy, possibilities, zhangcheng, and 75lb. ## v0.4.2 * Fix connection failure on iOS6. SockJS 0.3.3 includes this fix. * The new `preserve-inputs` package, included by default in new Meteor apps, restores the pre-v0.4.0 behavior of "preserving" all form input elements by ID and name during re-rendering; users who want more precise control over preservation can still use the APIs added in v0.4.0. * A few changes to the `Meteor.absoluteUrl` function: - Added a `replaceLocalhost` option. - The `ROOT_URL` environment variable is respected by `meteor run`. - It is now included in all apps via the `meteor` package. Apps that explicitly added the now-deprecated `absolute-url` smart package will log a deprecation warning. * Upgrade Node from 0.8.8 to 0.8.11. * If a Handlebars helper function `foo` returns null, you can now run do `{{foo.bar}}` without error, just like when `foo` is a non-existent property. * If you pass a non-scalar object to `Session.set`, an error will now be thrown (matching the behavior of `Session.equals`). #215 * HTML pages are now served with a `charset=utf-8` Content-Type header. #264 * The contents of `