Changelog History
Page 21
-
v0.8.0 Changes
March 27, 2014Meteor 0.8.0 introduces Blaze, a total rewrite of our live templating engine, replacing Spark. Advantages of Blaze include:
- Better interoperability with jQuery plugins and other techniques which directly manipulate the DOM
- More fine-grained updates: only the specific elements or attributes that change are touched rather than the entire template
- A fully documented templating language
- No need for the confusing
{{#constant}}
,{{#isolate}}
, andpreserve
directives - Uses standard jQuery delegation (
.on
) instead of our custom implementation - Blaze supports live SVG templates that work just like HTML templates
๐ See the Using Blaze wiki page โฌ๏ธ for full details on upgrading your app to 0.8.0. This includes:
The
Template.foo.rendered
callback is now only called once when the template is rendered, rather than repeatedly as it is "re-rendered", because templates now directly update changed data instead of fully re-rendering.๐ป The
accounts-ui
login buttons are now invoked as a{{> loginButtons}}
rather than as{{loginButtons}}
.Previous versions of Meteor used a heavily modified version of the Handlebars templating language. In 0.8.0, we've given it its own name: Spacebars! Spacebars has an explicit specification instead of being defined as a series of changes to Handlebars. There are some incompatibilities with our previous Handlebars fork, such as a different way of specifying dynamic element attributes and a new way of defining custom block helpers.
Your template files must consist of well-formed HTML. Invalid HTML is now a compilation failure. (There is a current limitation in our HTML parser such that it does not support omitting end tags on elements such as
<P>
and<LI>
.)Template.foo
is no longer a function. It is instead a "component". Components render to an intermediate representation of an HTML tree, not a string, so there is no longer an easy way to render a component to a static HTML string.๐
Meteor.render
andSpark.render
have been removed. UseUI.render
andUI.insert
instead.The
<body>
tag now defines a template just like the<template>
tag, which can have helpers and event handlers. Define them directly on the objectUI.body
.Previous versions of Meteor shipped with a synthesized
tap
event, implementing a zero-delay click event on mobile browsers. Unfortunately, this event never worked very well. We're eliminating it. Instead, use one of the excellent third party solutions.๐ฆ The
madewith
package (which supported adding a badge to your website displaying its score from http://madewith.meteor.com/) has been removed, as it is not compatible with the new version of that site.๐ฆ The internal
spark
,liverange
,universal-events
, anddomutils
packages have been removed.๐ The
Handlebars
namespace has been deprecated.Handlebars.SafeString
is nowSpacebars.SafeString
, andHandlebars.registerHelper
is nowUI.registerHelper
.
Patches contributed by GitHub users cmather and mart-jansink.
-
v0.8.0.1 Changes
April 21, 2014- ๐ Fix security flaw in OAuth1 implementation. Clients can no longer choose the callback_url for OAuth1 logins.
-
v0.7.2 Changes
March 18, 2014๐ Support oplog tailing on queries with the
limit
option. All queries except those containing$near
or$where
selectors or theskip
option can now be used with the oplog driver.โ Add hooks to login process:
Accounts.onLogin
,Accounts.onLoginFailure
, andAccounts.validateLoginAttempt
. These functions allow for rate limiting login attempts, logging an audit trail, account lockout flags, and more. See: http://docs.meteor.com/#accounts_validateloginattempt #1815๐ Change the
Accounts.registerLoginHandler
API for custom login methods. Login handlers now require a name and no longer have to deal with generating resume tokens. See https://github.com/meteor/meteor/blob/devel/packages/accounts-base/accounts_server.js for details. OAuth based login handlers using theOauth.registerService
packages are not affected.โ Add support for HTML email in
Accounts.emailTemplates
. #1785๐ minimongo: Support
{a: {$elemMatch: {x: 1, $or: [{a: 1}, {b: 1}]}}}
#1875๐ minimongo: Support
{a: {$regex: '', $options: 'i'}}
#1874minimongo: Fix sort implementation with multiple sort fields which each look inside an array. eg, ensure that with sort key
{'a.x': 1, 'a.y': 1}
, the document{a: [{x: 0, y: 4}]}
sorts before{a: [{x: 0, y: 5}, {x: 1, y: 3}]}
, because the 3 should not be used as a tie-breaker because it is not "next to" the tied 0s.minimongo: Fix sort implementation when selector and sort key share a field, that field matches an array in the document, and only some values of the array match the selector. eg, ensure that with sort key
{a: 1}
and selector{a: {$gt: 3}}
, the document{a: [4, 6]}
sorts before{a: [1, 5]}
, because the 1 should not be used as a sort key because it does not match the selector. (We only approximate the MongoDB behavior here by only supporting relatively selectors.)๐ Use
faye-websocket
(0.7.2) npm module instead ofwebsocket
(1.0.8) for server-to-server DDP.โก๏ธ Update Google OAuth package to use new
profile
andemail
scopes instead of deprecated URL-based scopes. #1887โ Add
_throwFirstError
option toDeps.flush
.๐ฆ Make
facts
package data available on the server asFacts._factsByPackage
.๐ Fix issue where
LESS
compilation error could crash themeteor run
process. #1877๐ Fix crash caused by empty HTTP host header in
meteor run
development server. #1871๐ Fix hot code reload in private browsing mode in Safari.
๐ Fix appcache size calculation to avoid erronious warnings. #1847
โ Remove unused
Deps._makeNonReactive
wrapper function. CallDeps.nonreactive
directly instead.Avoid setting the
oplogReplay
on non-oplog collections. Doing so caused mongod to crash.โ Add startup message to
test-in-console
to ease automation. #1884โฌ๏ธ Upgraded dependencies
- amplify: 1.1.2 (from 1.1.0)
Patches contributed by GitHub users awwx, dandv, queso, rgould, timhaines, zol
-
v0.7.2.3 Changes
December 09, 2014- ๐ Fix a security issue in allow/deny rules that could result in data loss. If your app uses allow/deny rules, or uses packages that use allow/deny rules, we recommend that you update immediately. Backport from 1.0.1.
-
v0.7.2.2 Changes
April 21, 2014- ๐ Fix a security flaw in OAuth1 and OAuth2 implementations. Backport from 0.8.1; see its entry for recommended actions to take.
-
v0.7.2.1 Changes
April 30, 2014- ๐ Fix security flaw in OAuth1 implementation. Clients can no longer choose the callback_url for OAuth1 logins. Backport from 0.8.0.1.
-
v0.7.1.2 Changes
February 27, 2014๐ Fix bug in tool error handling that caused
meteor
to crash on Mac OSX when no computer name is set.โช Work around a bug that caused MongoDB to fail an assertion when using tailable cursors on non-oplog collections.
-
v0.7.1.1 Changes
February 24, 2014โ Integrate with Meteor developer accounts, a new way of managing your meteor.com deployed sites. When you use
meteor deploy
, you will be prompted to create a developer account.- Once you've created a developer account, you can log in and out
from the command line with
meteor login
andmeteor logout
. - You can claim legacy sites with
meteor claim
. This command will prompt you for your site password if you are claiming a password-protected site; after claiming it, you will not need to enter the site password again. - You can add or remove authorized users, and view the list of
authorized users, for a site with
meteor authorized
. - You can view your current username with
meteor whoami
. - This release also includes the
accounts-meteor-developer
package for building Meteor apps that allow users to log in with their own developer accounts.
- Once you've created a developer account, you can log in and out
from the command line with
๐ Improve the oplog tailing implementation for getting real-time database updates from MongoDB.
- Add support for all operators except
$where
and$near
. Limit and skip are not supported yet. - Add optimizations to avoid needless data fetches from MongoDB.
- Fix an error ("Cannot call method 'has' of null") in an oplog callback. #1767
- Add support for all operators except
โ Add and improve support for minimongo operators.
- Support
$comment
. - Support
obj
name in$where
. $regex
matches actual regexps properly.- Improve support for
$nin
,$ne
,$not
. - Support using
{ $in: [/foo/, /bar/] }
. #1707 - Support
{$exists: false}
. - Improve type-checking for selectors.
- Support
{x: {$elemMatch: {$gt: 5}}}
. - Match Mongo's behavior better when there are arrays in the document.
- Support
$near
with sort. - Implement updates with
{ $set: { 'a.$.b': 5 } }
. - Support
{$type: 4}
queries. - Optimize
remove({})
when observers are paused. - Make update-by-id constant time.
- Allow
{$set: {'x._id': 1}}
. #1794
- Support
โฌ๏ธ Upgraded dependencies
- node: 0.10.25 (from 0.10.22). The workaround for specific Node versions from 0.7.0 is now removed; 0.10.25+ is supported.
- jquery: 1.11.0 (from 1.8.2). See http://jquery.com/upgrade-guide/1.9/ for upgrade instructions.
- jquery-waypoints: 2.0.4 (from 1.1.7). Contains backwards-incompatible changes.
- source-map: 0.3.2 (from 0.3.30) #1782
- websocket-driver: 0.3.2 (from 0.3.1)
- http-proxy: 1.0.2 (from a pre-release fork of 1.0)
- semver: 2.2.1 (from 2.1.0)
- request: 2.33.0 (from 2.27.0)
- fstream: 0.1.25 (from 0.1.24)
- tar: 0.1.19 (from 0.1.18)
- eachline: a fork of 2.4.0 (from 2.3.3)
- source-map: 0.1.31 (from 0.1.30)
- source-map-support: 0.2.5 (from 0.2.3)
- mongo: 2.4.9 (from 2.4.8)
- openssl in mongo: 1.0.1f (from 1.0.1e)
- kexec: 0.2.0 (from 0.1.1)
- less: 1.6.1 (from 1.3.3)
- stylus: 0.42.2 (from 0.37.0)
- nib: 1.0.2 (from 1.0.0)
- coffeescript: 1.7.1 (from 1.6.3)
CSS preprocessing and sourcemaps:
- Add sourcemap support for CSS stylesheet preprocessors. Use sourcemaps for stylesheets compiled with LESS.
- Improve CSS minification to deal with
@import
statements correctly. - Lint CSS files for invalid
@
directives. - Change the recommended suffix for imported LESS files from
.lessimport
to.import.less
. Add.import.styl
to allowstylus
imports..lessimport
continues to work but is deprecated.
โ Add
clientAddress
andhttpHeaders
tothis.connection
in method calls and publish functions.Hash login tokens before storing them in the database. Legacy unhashed tokens are upgraded to hashed tokens in the database as they are used in login requests.
๐ Change default accounts-ui styling and add more CSS classes.
๐จ Refactor command-line tool. Add test harness and better tests. Run
meteor self-test --help
for info on running the tools test suite.๐ Speed up application re-build in development mode by re-using file hash computation between file change watching code and application build code..
๐ Fix issues with documents containing a key named
length
with a numeric value. Underscore treated these as arrays instead of objects, leading to exceptions when . Patch Underscore to not treat plain objects (x.constructor === Object
) with numericlength
fields as arrays. #594 #1737๐ Deprecate
Accounts.loginServiceConfiguration
in favor ofServiceConfiguration.configurations
, exported by theservice-configuration
package.Accounts.loginServiceConfiguration
is maintained for backwards-compatibility, but it is defined in aMeteor.startup
block and so cannot be used from top-level code.Cursors with a field specifier containing
{_id: 0}
can no longer be used withobserveChanges
orobserve
. This includes the implicit calls to these functions that are done when returning a cursor from a publish function or using{{#each}}
.Transform functions must return objects and may not change the
_id
field, though they may leave it out.โ Remove broken IE7 support from the
localstorage
package. Meteor accounts logins no longer persist in IE7.๐ Fix the
localstorage
package when used with Safari in private browsing mode. This fixes a problem with login token storage and account login. #12910๏ธโฃ Types added with
EJSON.addType
now have defaultclone
andequals
implementations. Users may still specifyclone
orequals
functions to override the default behavior. #1745โ Add
frame-src
tobrowser-policy-content
and account for cross-browser CSP disparities.๐ Deprecate
Oauth.initiateLogin
in favor ofOauth.showPopup
.โ Add
WebApp.rawConnectHandlers
for adding connect handlers that run before any other Meteor handlers, exceptconnect.compress()
. Raw connect handlers see the URL's full path (even if ROOT_URL contains a non-empty path) and they run before static assets are served.โ Add
Accounts.connection
to allow using Meteor accounts packages with a non-default DDP connection.Detect and reload if minified CSS files fail to load at startup. This prevents the application from running unstyled if the page load occurs while the server is switching versions.
๐ Allow Npm.depends to specify any http or https URL containing a full 40-hex-digit SHA. #1686
โ Add
retry
package for connection retry with exponential backoff.โก๏ธ Pass
update
andremove
return values correctly when using collections validated withallow
anddeny
rules. #1759If you're using Deps on the server, computations and invalidation functions are not allowed to yield. Throw an error instead of behaving unpredictably.
๐ Fix namespacing in coffeescript files added to a package with the
bare: true
option. #1668๐ Fix races when calling login and/or logoutOtherClients from multiple tabs. #1616
Include oauth_verifier as a header rather than a parameter in the
oauth1
package. #1825๐ Fix
force-ssl
to allow local development withmeteor run
in IPv6 environments. #1751`๐ Allow cursors on named local collections to be returned from a publish function in an array. #1820
๐ Fix build failure caused by a directory in
programs/
without a package.js file.๐ท Do a better job of handling shrinkwrap files when an npm module depends on something that isn't a semver. #1684
๐ Fix failures updating npm dependencies when a node_modules directory exists above the project directory. #1761
Preserve permissions (eg, executable bit) on npm files. #1808
๐ SockJS tweak to support relative base URLs.
Don't leak sockets on error in dev-mode proxy.
๐ฏ Clone arguments to
added
andchanged
methods in publish functions. This allows callers to reuse objects and prevents already published data from changing after the fact. #1750Ensure springboarding to a different meteor tools version always uses
exec
to run the old version. This simplifies process management for wrapper scripts.
Patches contributed by GitHub users DenisGorbachev, EOT, OyoKooN, awwx, dandv, icellan, jfhamlin, marcandre, michaelbishop, mitar, mizzao, mquandalle, paulswartz, rdickert, rzymek, timhaines, and yeputons.
-
v0.7.0 Changes
December 17, 2013This version of Meteor contains a patch for a bug in Node 0.10 which most commonly affects websockets. The patch is against Node version 0.10.22 and 0.10.23. We strongly recommend using one of these precise ๐ versions of Node in production so that the patch will be applied. If you ๐ use a newer version of Node with this version of Meteor, Meteor will not apply the patch and will instead disable websockets.
โก๏ธ Rework how Meteor gets realtime database updates from MongoDB. Meteor now reads the MongoDB "oplog" -- a special collection that records all the write operations as they are applied to your database. This means changes to the database are instantly noticed and reflected in Meteor, whether they originated from Meteor or from an external database client. Oplog tailing is automatically enabled in development mode with
meteor run
, and can be enabled in production with theMONGO_OPLOG_URL
environment variable. Currently the only supported selectors are equality checks;$
-operators,limit
andskip
queries fall back to the original poll-and-diff algorithm. See https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver for details.โ Add
Meteor.onConnection
and addthis.connection
to method invocations and publish functions. These can be used to store data associated with individual clients between subscriptions and method calls. See http://docs.meteor.com/#meteor_onconnection for details. #1611Bundler failures cause non-zero exit code in
meteor run
. #1515๐ Fix error when publish function callbacks are called during session shutdown.
โก๏ธ Rework hot code push. The new
autoupdate
package drives automatic reloads on update using standard DDP messages instead of a hardcoded message at DDP startup. Now the hot code push only triggers when client code changes; server-only code changes will not cause the page to reload.๐ New
facts
package publishes internal statistics about Meteor.โ Add an explicit check that publish functions return a cursor, an array of cursors, or a falsey value. This is a safety check to to prevent users from accidentally returning Collection.findOne() or some other value and expecting it to be published.
Implement
$each
,$sort
, and$slice
options for minimongo's$push
modifier. #1492๐ Introduce
--raw-logs
option tometeor run
to disable log coloring and timestamps.โ Add
WebAppInternals.setBundledJsCssPrefix()
to control where the client loads bundled JavaScript and CSS files. This allows serving files from a CDN to decrease page load times and reduce server load.Attempt to exit cleanly on
SIGHUP
. Stop accepting incoming connections, kill DDP connections, and finish all outstanding requests for static assets.In the HTTP server, only keep sockets with no active HTTP requests alive for 5 seconds.
๐ Fix handling of
fields
option in minimongo when only_id
is present. #1651๐ Fix issue where setting
process.env.MAIL_URL
in app code would not alter where mail was sent. This was a regression in 0.6.6 from 0.6.5. #1649๐ Use stderr instead of stdout (for easier automation in shell scripts) when prompting for passwords and when downloading the dev bundle. #1600
Ensure more downtime during file watching. #1506
๐ Fix
meteor run
with settings files containing non-ASCII characters. #1497๐ Support
EJSON.clone
forMeteor.Error
. As a result, they are properly stringified in DDP even if thrown through aFuture
. #1482๐ Fix passing
transform: null
option tocollection.allow()
to disable transformation in validators. #1659๐ Fix livedata error on
this.removed
during session shutdown. #1540 #1553๐ Fix incompatibility with Phusion Passenger by removing an unused line. #1613
Ensure install script creates /usr/local on machines where it does not exist (eg. fresh install of OSX Mavericks).
Set x-forwarded-* headers in
meteor run
.๐ Clean up package dirs containing only ".build".
Check for matching hostname before doing end-of-oauth redirect.
Only count files that actually go in the cache towards the
appcache
size check. #1653.Increase the maximum size spiderable will return for a page from 200kB to 5MB.
โฌ๏ธ Upgraded dependencies:
- SockJS server from 0.3.7 to 0.3.8, including new faye-websocket module.
- Node from 0.10.21 to 0.10.22
- MongoDB from 2.4.6 to 2.4.8
- clean-css from 1.1.2 to 2.0.2
- uglify-js from a fork of 2.4.0 to 2.4.7
- handlebars npm module no longer available outside of handlebars package
Patches contributed by GitHub users AlexeyMK, awwx, dandv, DenisGorbachev, emgee3, FooBarWidget, mitar, mcbain, rzymek, and sdarnell.
-
v0.7.0.1 Changes
December 20, 2013