Meteor Changelog
v1.4.2.3
- Style improvements for
meteor create --full. #8045
Note: Meteor 1.4.2.2 was finalized before #8045 was merged, but those changes were deemed important enough to skip recommending 1.4.2.2 and instead immediately release 1.4.2.3.
v1.4.2.2
Node has been upgraded to version 4.6.2.
meteor createnow has a new--fulloption, which generates an larger app, demonstrating development techniques highlighted in the Meteor GuideMinimongo now supports
$min,$maxand partially supports$currentDate. Issue #7857 PR #7858Fix for Issue #5676 PR #7968
It is now possible for packages to specify a lazy main module:
js Package.onUse(function (api) { api.mainModule("client.js", "client", { lazy: true }); });This means theclient.jsmodule will not be evaluated during app startup unless/until another module imports it, and will not even be included in the client bundle if no importing code is found. Note 1: packages with lazy main modules cannot useapi.exportto export global symbols to other packages/apps. Note 2: packages with lazy main modules should be restricted to Meteor 1.4.2.2 or later viaapi.versionsFrom("1.4.2.2"), since older versions of Meteor cannot import lazy main modules usingimport "meteor/<package name>"but must explicitly name the module:import "meteor/<package name>/client.js".
v1.4.2.1
Installing the
babel-runtimenpm package in your applicationnode_modulesdirectory is now required for most Babel-transformed code to work, as the Meteorbabel-runtimepackage no longer attempts to provide custom implementations of Babel helper functions. To install thebabel-runtimepackage, simply run the commandmeteor npm install --save babel-runtimein any Meteor application directory. The Meteor
babel-runtimepackage version has been bumped to 1.0.0 to reflect this major change. #7995File system operations performed by the command-line tool no longer use fibers unless the
METEOR_DISABLE_FS_FIBERSenvironment variable is explicitly set to a falsy value. For larger apps, this change results in significant build performance improvements due to the creation of fewer fibers and the avoidance of unnecessary asyncronous delays. https://github.com/meteor/meteor/pull/7975/commits/ca4baed90ae0675e55c93976411d4ed91f12dd63Running Meteor as
rootis still discouraged, and results in a fatal error by default, but the--allow-superuserflag now works as claimed. #7959The
dev_bundle\python\python.exeexecutable has been restored to the Windows dev bundle, which may help withmeteor npm rebuildcommands. #7960Changes within linked npm packages now trigger a partial rebuild, whereas previously (in 1.4.2) they were ignored. #7978
Miscellaneous fixed bugs: #2876 #7154 #7956 #7974 #7999 #8005 #8007
v1.4.2
- This release implements a number of rebuild performance optimizations.
As you edit files in development, the server should restart and rebuild
much more quickly, especially if you have many
node_modulesfiles. See https://github.com/meteor/meteor/pull/7668 for more details.
Note: the
METEOR_PROFILEenvironment variable now provides data for server startup time as well as build time, which should make it easier to tell which of your packages are responsible for slow startup times. Please include the output ofMETEOR_PROFILE=10 meteor runwith any GitHub issue about rebuild performance.
npmhas been upgraded to version 3.10.9.The
cordova-libnpm package has been updated to 6.3.1, along with cordova-android (5.2.2) and cordova-ios (4.2.1), and various plugins.The
node-pre-gypnpm package has been updated to 0.6.30.The
lru-cachenpm package has been updated to 4.0.1.The
meteor-promisenpm package has been updated to 0.8.0 for better asynchronous stack traces.The
meteortool is now prevented from running asrootas this is not recommended and can cause issues with permissions. In some environments, (e.g. Docker), it may still be desired to run asrootand this can be permitted by passing--unsafe-permto themeteorcommand. #7821Blaze-related packages have been extracted to
meteor/blaze, and the mainmeteor/meteorrepository now refers to them via git submodules (see #7633). When runningmeteorfrom a checkout, you must now update these submodules by runninggit submodule update --init --recursivein the root directory of your
meteorcheckout.Accounts.forgotPassword and .verifyEmail no longer throw errors if callback is provided. Issue #5664 Origin PR #5681 Merged PR
The default content security policy (CSP) for Cordova now includes
ws:andwss:WebSocket protocols. #7774meteor npmcommands are now configured to usedev_bundle/.npmas the npm cache directory by default, which should make npm commands less sensitive to non-reproducible factors in the external environment. https://github.com/meteor/meteor/pull/7668/commits/3313180a6ff33ee63602f7592a9506012029e919The
meteor testcommand now supports the--no-release-checkflag. https://github.com/meteor/meteor/pull/7668/commits/7097f78926f331fb9e70a06300ce1711adae2850JavaScript module bundles on the server no longer include transitive
node_modulesdependencies, since those dependencies can be evaluated directly by Node. This optimization should improve server rebuild times for apps and packages with largenode_modulesdirectories. https://github.com/meteor/meteor/pull/7668/commits/03c5346873849151cecc3e00606c6e5aa13b3bbcThe
standard-minifier-csspackage now does basic caching for the expensivemergeCssfunction. https://github.com/meteor/meteor/pull/7668/commits/bfa67337dda1e90610830611fd99dcb1bd44846aThe
coffeescriptpackage now natively supportsimportandexportdeclarations. #7818
v1.4.1.3
Node has been updated to version 4.6.1: https://nodejs.org/en/blog/release/v4.6.1/
The
mongodbnpm package used by thenpm-mongoMeteor package has been updated to version 2.2.11. #7780The
fibersnpm package has been upgraded to version 1.0.15.Running Meteor with a different
--portwill now automatically reconfigure the Mongo replica set when using the WiredTiger storage engine, instead of failing to start Mongo. #7840.When the Meteor development server shuts down, it now attempts to kill the
mongodprocess it spawned, in addition to killing any runningmongodprocesses when the server first starts up. https://github.com/meteor/meteor/pull/7668/commits/295d3d5678228f06ee0ab6c0d60139849a0ea192The
meteor <command> ...syntax will now work for any command installed indev_bundle/bin, except for Meteor's own commands.Incomplete package downloads will now fail (and be retried several times) instead of silently succeeding, which was the cause of the dreaded
Error: ENOENT: no such file or directory, open... os.jsonerror. #7806
v1.4.1.2
Node has been upgraded to version 4.6.0, a recommended security release: https://nodejs.org/en/blog/release/v4.6.0/
npmhas been upgraded to version 3.10.8.
v1.4.1.1
- Update the version of our Node MongoDB driver to 2.2.8 to fix a bug in
reconnection logic, leading to some
updateandremovecommands being treated asinserts. #7594
v1.4.1
Node has been upgraded to 4.5.0.
npmhas been upgraded to 3.10.6.The
meteor publish-for-archcommand is no longer necessary when publishing Meteor packages with binary npm dependencies. Instead, binary dependencies will be rebuilt automatically on the installation side. Meteor package authors are not responsible for failures due to compiler toolchain misconfiguration, and any compilation problems with the underlying npm packages should be taken up with the authors of those packages. That said, if a Meteor package author really needs or wants to continue usingmeteor publish-for-arch, she should publish her package using an older release: e.g.meteor --release 1.4 publish. #7608The
.meteor-last-rebuild-version.jsonfiles that determine if a binary npm package needs to be rebuilt now include more information from theprocessobject, namelyprocess.{platform,arch,versions}instead of justprocess.versions. Note also that the comparison of versions now ignores differences in patch versions, to avoid needless rebuilds.The
npm-bcryptpackage now uses a pure-JavaScript implementation by default, but will prefer the nativebcryptimplementation if it is installed in the application'snode_modulesdirectory. In other words, runmeteor install --save bcryptin your application if you need or want to use the native implementation ofbcrypt. #7595After Meteor packages are downloaded from Atmosphere, they will now be extracted using native
taror7z.exeon Windows, instead of the https://www.npmjs.com/package/tar library, for a significant performance improvement. #7457The npm
tarpackage has been upgraded to 2.2.1, though it is now only used as a fallback after nativetarand/or7z.exe.The progress indicator now distinguishes between downloading, extracting, and loading newly-installed Meteor packages, instead of lumping all of that work into a "downloading" status message.
Background Meteor updates will no longer modify the
~/.meteor/meteorsymbolic link (orAppData\Local\.meteor\meteor.baton Windows). Instead, developers must explicitly typemeteor updateto begin using a new version of themeteorscript.Password Reset tokens now expire (after 3 days by default -- can be modified via
Accounts.config({ passwordResetTokenExpirationInDays: ...}). PR #7534The
googlepackage now uses theemailscope as a mandatory field instead of theprofilescope. Theprofilescope is still added by default if therequestPermissionsoption is not specified to maintain backward compatibility, but it is now possible to pass an empty array torequestPermissionsin order to only request theemailscope, which reduces the amount of permissions requested from the user in the Google popup. PR #6975Added
Facebook.handleAuthFromAccessTokenin the case where you get the FB accessToken in some out-of-band way. PR #7550Accounts.onLogoutgets{ user, connection }context in a similar fashion toAccounts.onLogin. Issue #7397 PR #7433The
node-gypandnode-pre-gyptools will now be installed inbundle/programs/server/node_modules, to assist with rebuilding binary npm packages when deploying an app to Galaxy or elsewhere. #7571The
standard-minifier-{js,css}packages no longer minify .js or .css files on the server. #7572Multi-line input to
meteor shell, which was broken by changes to thereplmodule in Node 4, works again. #7562The implementation of the command-line
meteortool now forbids misbehaving polyfill libraries from overwritingglobal.Promise. #7569The
oauth-encryptionpackage no longer depends on thenpm-node-aes-gcmpackage (or any special npm packages), because the Node 4cryptolibrary natively supports theaes-128-gcmalgorithm. #7548The server-side component of the
meteor shellcommand has been moved into a Meteor package, so that it can be developed independently from the Meteor release process, thanks to version unpinning. #7624The
meteor shellcommand now works when runningmeteor test.The
meteor debugcommand no longer pauses at the first statement in the Node process, yet still reliably stops at custom breakpoints it encounters later.The
meteor-babelpackage has been upgraded to 0.12.0.The
meteor-ecmascript-runtimepackage has been upgraded to 0.2.9, to support several additional stage 4 proposals.A bug that prevented @-scoped npm packages from getting bundled for deployed apps has been fixed. #7609.
The
meteor updatecommand now supports an--all-packagesflag to update all packages (including indirect dependencies) to their latest compatible versions, similar to passing the names of all your packages to themeteor updatecommand. #7653Background release updates can now be disabled by invoking either
meteor --no-release-checkorMETEOR_NO_RELEASE_CHECK=1 meteor. #7445
v1.4.0.1
Fix issue with the 1.4 tool springboarding to older releases (see Issue #7491)
Fix issue with running in development on Linux 32bit Issue #7511
v1.4
Node has been upgraded to 4.4.7.
The
meteor-babelnpm package has been upgraded to 0.11.7.The
reifynpm package has been upgraded to 0.3.6.The
bcryptnpm package has been upgraded to 0.8.7.Nested
importdeclarations are now enabled for package code as well as application code. 699cf1f38e9b2a074169515d23983f74148c7223Meteor has been upgraded to support Mongo 3.2 by default (the bundled version used by
meteor runhas been upgraded). Internally it now uses the 2.2.4 version of themongodbnpm driver, and has been tested against at Mongo 3.2 server. Issue #6957Mongo 3.2 defaults to the new WiredTiger storage engine. You can update your database following the instructions here: https://docs.mongodb.com/v3.0/release-notes/3.0-upgrade/. In development, you can also just use
meteor resetto remove your old database, and Meteor will create a new WiredTiger database for you. The Mongo driver will continue to work with the old MMAPv1 storage engine however.The new version of the Mongo driver has been tested with MongoDB versions from 2.6 up. Mongo 2.4 has now reached end-of-life (https://www.mongodb.com/support-policy), and is no longer supported.
If you are setting
MONGO_OPLOG_URL, especially in production, ensure you are passing in thereplicaSetargument (see [#7450] (https://github.com/meteor/meteor/issues/7450))Custom Mongo options can now be specified using the
Mongo.setConnectionOptions(options)API. #7277On the server, cursor.count() now takes a single argument
applySkipLimit(see the corresponding [Mongo documentation] (http://mongodb.github.io/node-mongodb-native/2.1/api/Cursor.html#count))Fix for regression caused by #5837 which incorrectly rewrote network-path references (e.g.
//domain.com/image.gif) in CSS URLs. #7416Added Angular2 boilerplate example #7364
v1.3.5.1
- This release fixed a small bug in 1.3.5 that prevented updating apps
whose
.meteor/releasefiles refer to releases no longer installed in~/.meteor/packages/meteor-tool. 576468eae8d8dd7c1fe2fa381ac51dee5cb792cd
v1.3.5
Failed Meteor package downloads are now automatically resumed from the point of failure, up to ten times, with a five-second delay between attempts. #7399
If an app has no
package.jsonfile, all packages innode_moduleswill be built into the production bundle. In other words, make sure you have apackage.jsonfile if you want to benefit fromdevDependenciespruning. 7b2193188fc9e297eefc841ce6035825164f0684Binary npm dependencies of compiler plugins are now automatically rebuilt when Node/V8 versions change. #7297
Because
.meteor/localis where purely local information should be stored, the.meteor/dev_bundlelink has been renamed to.meteor/local/dev_bundle.The
.meteor/local/dev_bundlelink now corresponds exactly to.meteor/releaseeven when an app is using an older version of Meteor. d732c2e649794f350238d515153f7fb71969c526When recompiling binary npm packages, the
npm rebuildcommand now receives the flags--update-binaryand--no-bin-links, in addition to respecting the$METEOR_NPM_REBUILD_FLAGSenvironment variable. #7401The last solution found by the package version constraint solver is now stored in
.meteor/local/resolver-result-cache.jsonso that it need not be recomputed every time Meteor starts up.If the
$GYP_MSVS_VERSIONenvironment variable is not explicitly provided tometeor {node,npm}, thenode-gyptool will infer the appropriate version (though it still defaults to "2015").
v1.3.4.4
Fixed #7374.
The default loglevel for internal
npmcommands (e.g., those related toNpm.depends) has been set to "error" instead of "warn". Note that this change does not affectmeteor npm ...commands, which can be easily configured using.npmrcfiles or command-line flags. 0689cae25a3e0da3615a402cdd0bec94ce8455c8
v1.3.4.3
Node has been upgraded to 0.10.46.
npmhas been upgraded to 3.10.5.The
node-gypnpm package has been upgraded to 3.4.0.The
node-pre-gypnpm package has been upgraded to 0.6.29.The
~/.meteor/meteorsymlink (orAppData\Local\.meteor\meteor.baton Windows) will now be updated properly aftermeteor updatesucceeds. This was promised in v1.3.4.2 but not fully delivered.The
.meteor/dev_bundlesymbolic link introduced in v1.3.4.2 is now updated whenever.meteor/releaseis read.The
.meteor/dev_bundlesymbolic link is now ignored by.meteor/.gitignore.
v1.3.4.2
The
meteor nodeandmeteor npmcommands now respect.meteor/releasewhen resolving which versions ofnodeandnpmto invoke. Note that you mustmeteor updateto 1.3.4.2 before this logic will take effect, but it will work in all app directories after updating, even those pinned to older versions. #7338The Meteor installer now has the ability to resume downloads, so installing Meteor on a spotty internet connection should be more reliable. #7348
When running
meteor test, shared directories are symlinked (or junction-linked on Windows) into the temporary test directory, not copied, leading to much faster test start times after the initial build. The directories:.meteor/local/{bundler-cache,isopacks,plugin-cache}App.appendToConfigallows adding custom tags to config.xml. #7307When using
ROOT_URLwith a path, relative CSS URLs are rewriten accordingly. #5837
v1.3.4.1
Increased the default HTTP timeout for requests made by the
meteorcommand-line tool to 60 seconds (previously 30), and disabled the timeout completely for Galaxy deploys.
v1.3.4
The version of
npmused bymeteor npmand when installingNpm.dependsdependencies of Meteor packages has been upgraded from 2.15.1 to 3.9.6, which should lead to much flatter node_modules dependency trees.The
meteor-babelnpm package has been upgraded to 0.11.6, and is now installed using[email protected], fixing bugs arising from Windows path limits, such as #7247.The
reifynpm package has been upgraded to 0.3.4, fixing #7250.Thanks to caching improvements for the
files.{stat,lstat,readdir,realpath}methods andPackageSource#_findSources, development server restart times are no longer proportional to the number of files innode_modulesdirectories. #7253 #7008When installed via
InstallMeteor.exeon Windows, Meteor can now be easily uninstalled through the "Programs and Features" control panel.HTTP requests made by the
meteorcommand-line tool now have a timeout of 30 seconds, which can be adjusted by the$TIMEOUT_SCALE_FACTORenvironment variable. #7143The
requestnpm dependency of thehttppackage has been upgraded from 2.53.0 to 2.72.0.The
--headlessoption is now supported bymeteor testandmeteor test-packages, in addition tometeor self-test. #7245
v1.3.3.1
The
node-aes-gcmnpm package used byoauth-encryptionhas been upgraded to 0.1.5. #7217The
reifymodule compiler has been upgraded to 0.3.3.The
meteor-babelpackage has been upgraded to 0.11.4.The
pathwatchernpm package has been upgraded to 6.7.0.In CoffeeScript files with raw JavaScript enclosed by backticks, the compiled JS will no longer contain
requirecalls inserted by Babel. #7226Code related to the Velocity testing system has been removed. #7235
Allow smtps:// in MAIL_URL #7043
Adds
Accounts.onLogout()a hook directly analogous toAccounts.onLogin(). PR #6889
v1.3.3
Node has been upgraded from 0.10.43 to 0.10.45.
npmhas been upgraded from 2.14.22 to 2.15.1.The
fiberspackage has been upgraded to 1.0.13.The
meteor-babelpackage has been upgraded to 0.10.9.The
meteor-promisepackage has been upgraded to 0.7.1, a breaking change for code that usesPromise.denodeify,Promise.nodeify,Function.prototype.async, orFunction.prototype.asyncApply, since those APIs have been removed.Meteor packages with binary npm dependencies are now automatically rebuilt using
npm rebuildwhenever the version of Node or V8 changes, making it much simpler to use Meteor with different versions of Node. 5dc51d39ecc9e8e342884f3b4f8a489f734b4352*.min.jsfiles are no longer minified during the build process. PR #6986 Issue #5363You can now pick where the
.meteor/localdirectory is created by setting theMETEOR_LOCAL_DIRenvironment variable. This lets you run multiple instances of the same Meteor app. PR #6760 Issue #6532Allow using authType in Facebook login PR #5694
Adds flush() method to Tracker to force recomputation PR #4710
Adds
defineMutationMethodsoption (default: true) tonew Mongo.Collectionto override default behavior that sets up mutation methods (/collection/[insert|update...]) PR #5778Allow overridding the default warehouse url by specifying
METEOR_WAREHOUSE_URLBASEPR #7054Allow
_idin$setOnInsertin Minimongo: https://github.com/meteor/meteor/pull/7066Added support for
$eqto Minimongo: https://github.com/meteor/meteor/pull/4235Insert a
Dateheader into emails by default: https://github.com/meteor/meteor/pull/6916/filesmeteor testnow supports setting the bind address using--port IP:PORTthe same asmeteor runPR #6964 Issue #6961Meteor.applynow takes anoRetryoption to opt-out of automatically retrying non-idempotent methods on connection blips: PR #6180DDP callbacks are now batched on the client side. This means that after a DDP message arrives, the local DDP client will batch changes for a minimum of 5ms (configurable via
bufferedWritesInterval) and a maximum of 500ms (configurable viabufferedWritesMaxAge) before calling any callbacks (such as cursor observe callbacks).PhantomJS is no longer included in the Meteor dev bundle (#6905). If you previously relied on PhantomJS for local testing, the
spiderablepackage, Velocity tests, or testing Meteor from a checkout, you should now install PhantomJS yourself, by running the following commmand:meteor npm install -g phantomjs-prebuiltThe
babel-compilerpackage now looks for.babelrcfiles andpackage.jsonfiles with a "babel" section. If found, these files may contribute additional Babel transforms that run before the usualbabel-preset-meteorset of transforms. In other words, if you don't like the waybabel-preset-meteorhandles a particular kind of syntax, you can add your preferred transform plugins to the "presets" or "plugins" section of your.babelrcorpackage.jsonfile. #6351When
BabelCompilercannot resolve a Babel plugin or preset package in.babelrcorpackage.json, it now merely warns instead of crashing. #7179Compiler plugins can now import npm packages that are visible to their input files using
inputFile.require(id). b16e8d50194b37d3511889b316345f31d689b020importstatements in application modules now declare normal variables for the symbols that are imported, making it significantly easier to inspect imported variables when debugging in the browser console or inmeteor shell.importstatements in application modules are no longer restricted to the top level, and may now appear inside conditional statements (e.g.if (Meteor.isServer) { import ... }) or in nested scopes.importstatements now work as expected inmeteor shell. #6271Commands installed in
dev_bundle/lib/node_modules/.bin(such asnode-gypandnode-pre-gyp) are now available to scripts run bymeteor npm. e95dfe410e1b43e8131bc2df9d2c29decdd1eaf6When building an application using
meteor build, "devDependencies" listed inpackage.jsonare no longer copied into the bundle. #6750Packages tested with
meteor test-packagesnow have access to localnode_modulesdirectories installed in the parent application or in the package directory itself. #6827You no longer need to specify
DEPLOY_HOSTNAME=galaxy.meteor.comto runmeteor deploy(and similar commands) against Galaxy. The AWS us-east-1 Galaxy is now the default forDEPLOY_HOSTNAME. If your app's DNS points to another Galaxy region,meteor deploywill detect that automatically as well. #7055The
coffeescriptplugin now passes raw JavaScript code enclosed by back-ticks toBabelCompiler, enabling all ECMAScript features (includingimportandexport) within CoffeeScript. #6000 #6691The
coffeescriptpackage now implies the same runtime environment asecmascript(ecmascript-runtime,babel-runtime, andpromise, but notmodules). #7184When Meteor packages install
npmdependencies, theprocess.env.NPM_CONFIG_REGISTRYenvironment variable is now respected. #7162files.renamenow always executes synchronously. 9856d1d418a4d19c0adf22ec9a92f7ce81a23b05"Bare" files contained by
client/compatibility/directories or added withapi.addFiles(path, ..., { bare: true })are no longer compiled by Babel. https://github.com/meteor/meteor/pull/7033#issuecomment-225126778Miscellaneous fixed bugs: #6877 #6843 #6881
v1.3.2.4
Meteor 1.3.2.4 was published because publishing 1.3.2.3 failed in an unrecoverable way. Meteor 1.3.2.4 contains no additional changes beyond the changes in 1.3.2.3.
v1.3.2.3
- Reverted accidental changes included in 1.3.2.1 and 1.3.2.2 that improved DDP performance by batching updates, but broke some packages that relied on private methods of the DDP client Connection class. See https://github.com/meteor/meteor/pull/5680 for more details. These changes will be reinstated in 1.3.3.
v1.3.2.2
- Fixed bugs #6819 and #6831.
v1.3.2.1
- Fixed faulty comparison of
.sourcePathand.targetPathproperties of files scanned by theImportScanner, which caused problems for apps using thetap:i18npackage. 6e792a7cf25847b8cd5d5664a0ff45c9fffd9e57
v1.3.2
The
meteor/meteorrepository now includes aRoadmap.mdfile: https://github.com/meteor/meteor/blob/devel/Roadmap.mdRunning
npm installinbundle/programs/serverwhen deploying an app also rebuilds any binary npm dependencies, fixing #6537. Set METEORSKIPNPM_REBUILD=1 to disable this behavior if necessary.Non-.js(on) files in
node_modules(such as.lessand.scss) are now processed by compiler plugins and may be imported by JS. #6037The
jquerypackage can now be completely removed from any app (#6563), and uses<app>/node_modules/jqueryif available (#6626).Source maps are once again generated for all bundled JS files, even if they are merely identity mappings, so that the files appear distinct in the browser, and stack traces make more sense. #6639
All application files in
importsdirectories are now considered lazy, regardless of whether the app is using themodulespackage. This could be a breaking change for 1.3.2 apps that do not usemodulesorecmascriptbut containimportsdirectories. Workaround: move files out ofimports, or renameimportsto something else.The
npm-bcryptpackage has been upgraded to use the latest version (0.8.5) of thebcryptnpm package.Compiler plugins can call
addJavaScript({ path })multiple times with different paths for the same source file, andmodule.idwill reflect thispathinstead of the source path, if they are different. #6806Fixed bugs: https://github.com/meteor/meteor/milestones/Release%201.3.2
Fixed unintended change to
Match.Optionalwhich caused it to behave the same as the newMatch.Maybeand incorrectly matchingnullwhere it previously would not have allowed it. #6735
v1.3.1
Long isopacket node_modules paths have been shortened, fixing upgrade problems on Windows. #6609
Version 1.3.1 of Meteor can now publish packages for earlier versions of Meteor, provided those packages do not rely on modules. #6484 #6618
The meteor-babel npm package used by babel-compiler has been upgraded to version 0.8.4. c8d12aed4e725217efbe86fa35de5d5e56d73c83
The
meteor nodeandmeteor npmcommands now return the same exit codes as their child processes. #6673 #6675Missing module warnings are no longer printed for Meteor packages, or for
requirecalls whenrequireis not a free variable, fixing https://github.com/practicalmeteor/meteor-mocha/issues/19.Cordova iOS builds are no longer built by Meteor, but merely prepared for building. 88d43a0f16a484a5716050cb7de8066b126c7b28
Compiler plugin errors were formerly silenced for files not explicitly added in package.js. Now those errors are reported when/if the files are imported by the ImportScanner. be986fd70926c9dd8eff6d8866205f236c8562c4
v1.3
ES2015/Modules
Enable ES2015 and CommonJS modules in Meteor apps and packages, on both client and server. Also let you install modules in apps and package by running
npm install. See: https://github.com/meteor/meteor/blob/master/packages/modules/README.mdEnable ES2015 generators and ES2016 async/await in the
ecmascriptpackage.Inherit static getters and setters in subclasses, when using the
ecmascriptpackage. #5624Report full file paths on compiler errors when using the
ecmascriptpackage. #5551Now possible to
importorrequirefiles with a.jsonfile extension. #5810process.env.NODE_ENVis now defined on both client and server as eitherdevelopmentorproduction, which also determines the boolean flagsMeteor.isDevelopmentandMeteor.isProduction.Absolute identifiers for app modules no longer have the
/app/prefix, and absolute identifiers for Meteor packages now have the prefix/node_modules/meteor/instead of just/node_modules/, meaning you shouldimport {Blaze} from "meteor/blaze"instead offrom "blaze".Package variables imported by application code are once again exposed globally, allowing them to be accessed from the browser console or from
meteor shell. #5868Fixed global variable assignment analysis during linking. #5870 #5819
Changes to files in node_modules will now trigger a restart of the development server, just like any other file changes. #5815
The meteor package now exports a
globalvariable (a la Node) that provides a reliable reference to the global object for all Meteor code.Packages in local node_modules directories now take precedence over Meteor packages of the same name. #5933
Upgraded
babel-compilerto Babel 6, with the following set of plugins: https://github.com/meteor/babel-preset-meteor/blob/master/index.jsLazy CSS modules may now be imported by JS: 12c946ee651a93725f243f790c7919de3d445a19
Packages in the top-level node_modules directory of an app can now be imported by Meteor packages: c631d3ac35f5ca418b93c454f521989855b8ec72
Added support for wildcard import and export statements. #5872 #5897
Client-side stubs for built-in Node modules are now provided automatically if the
meteor-node-stubsnpm package is installed. #6056Imported file extensions are now optional for file types handled by compiler plugins. #6151
Upgraded Babel packages to ~6.5.0: 292824da3f8449afd1cd39fcd71acd415c809c0f Note: .babelrc files are now ignored (#6016), but may be reenabled (#6351).
Polyfills now provided for
process.nextTickandprocess.platform. #6167 #6198 #6055 efe53de492da6df785f1cbef2799d1d2b492a939The
meteor test-appcommand is nowmeteor test [--full-app]: ab5ab15768136d55c76d51072e746d80b45ec181New apps now include a
package.jsonfile. c51b8cf7ffd8e7c9ca93768a2df93e4b552c199crequire.resolveis now supported. https://github.com/benjamn/install/commit/ff6b25d6b5511d8a92930da41db73b93eb1d6cf8JSX now enabled in
.jsfiles processed by theecmascriptcompiler plugin. #6151On the server, modules contained within
node_modulesdirectories are now loaded using the native Noderequirefunction. #6398All
<script>tag(s) for application and package code now appear at the end of the<body>rather than in the<head>. #6375The client-side version of
process.env.NODE_ENV(and other environment variables) now matches the corresponding server-side values. #6399
Performance
Don't reload package catalog from disk on rebuilds unless package dependencies changed. #5747
Improve minimongo performance on updating documents when there are many active observes. #5627
Platform
Upgrade to Node v0.10.41.
Allow all types of URLs that npm supports in
Npm.dependsdeclarations.Split up
standard-minifiersin separate CSS (standard-minifiers-css) and JS minifiers (standard-minifiers-js).standard-minifiersnow acts as an umbrella package for these 2 minifiers.Allow piping commands to
meteor shellvia STDIN. #5575Let users set the CAFILE environment variable to override the SSL root certificate list. #4757 #5523
force-sslis now marked production only.
Cordova
Cordova dependencies have been upgraded to the latest versions (
cordova-lib6.0.0,cordova-ios4.0.1, andcordova-android5.1.0).iOS apps now require iOS 8 or higher, and building for iOS requires Xcode 7.2 to be installed.
Building for Android now requires Android SDK 23 to be installed. You may also need to create a new AVD for the emulator.
Building Cordova Android apps on Windows is now supported. #4155
The Crosswalk plugin has been updated to 1.4.0.
Cordova core plugins are now pinned to minimal versions known to be compatible with the included platforms. A warning is printed asking people to upgrade their dependencies if they specify an older version, but we'll always use the pinned version regardless.
The plugin used for file serving and hot code push has been completely rewritten. Among many other improvements, it downloads updates incrementally, can recover from downloading faulty JavaScript code, and is much more reliable and performant. See
cordova-plugin-meteor-webappfor more a more detailed description of the new design.If the callbacks added with
Meteor.startup()do not complete within a set time, we consider a downloaded version faulty and will fallback to the last known good version. The default timeout is 20 seconds, but this can be configured by settingApp.setPreference("WebAppStartupTimeout", "10000");(in milliseconds) inmobile-config.js.We now use
WKWebViewon iOS by default, even on iOS 8 (which works because we do not usefile://URLs).We now use
localhostinstead ofmeteor.localto serve files from. Sincelocalhostis considered a secure origin, this means the web view won't disable web platform features that it otherwise would.The local server port now lies between 12000-13000 and is chosen based on the
appId, to both be consistent and lessen the chance of collisions between multiple Meteor Cordova apps installed on the same device.The plugin now allows for local file access on both iOS and Android, using a special URL prefix (
http://localhost:<port>/local-filesystem/<path>).App icon and launch image sizes have been updated. Low resolution sizes for now unsupported devices have been deprecated, and higher resolution versions have been added.
We now support the modern Cordova whitelist mechanism.
App.accessRulehas been updated with new options.meteor buildnow supports a--server-onlyoption to avoid building the mobile apps wheniosorandroidplatforms have been added. It still builds theweb.cordovaarchitecture in the server bundle however, so it can be served for hot code pushes.meteor runnow always tries to use an autodetected IP address as the mobileROOT_URL, even if we're not running on a device. This avoids a situation where an app already installed on a device connects to a restarted development server and receives alocalhostROOT_URL. #5973Fixed a discrepancy between the way we calculated client hashes during a mobile build and on the server, which meant a Cordova app would always download a new version the first time it started up.
In Cordova apps,
Meteor.startup()now correctly waits for the device to be ready before firing the callback.
Accounts
- Make
Accounts.forgotPasswordtreat emails as case insensitive, as the rest of the accounts system does.
Blaze
Don't throw in certain cases when calling a template helper with an empty data context. #5411 #5736
Improve automatic blocking of URLs in attribute values to also include
vbscript:URLs.
Check
- Introduced new matcher
Match.Maybe(type)which will also match (permit)nullin addition toundefined. This is a suggested replacement (where appropriate) forMatch.Optionalwhich did not permitnull. This prevents the need to useMatch.OneOf(null, undefined, type). #6220
Testing
- Packages can now be marked as
testOnlyto only run as part of app testing withmeteor test. This is achieved by settingtestOnly: truetoPackage.describe.
Uncategorized
Remove warning in the
simple-todos-reactexample app. #5716Fix interaction between
browser-policyandoauthpackages. #5628Add README.md to the
tinytestpackage. #5750Don't crash when calling
ReactiveDict.prototype.clearif a property with a value wasn't previously accessed. #5530 #5602Move
DDPRateLimiterto the server only, since it won't work if it is called from the client. It will now error if referenced from the client at all.Don't call function more than once when passing a
Match.Whereargument tocheck. #5630 #5651Fix empty object argument check in
this.subscribein templates. #5620Make
HTTP.callnot crash on undefined content. #5565 #5601Return observe handle from
Mongo.Collection.prototype._publishCursor. #4983 #5615Add 'Did you mean?' reminders for some CLI commands to help Rails developers. #5593
Make internal shell scripts compatible with other Unix-like systems. #5585
Add a
_pollingIntervaloption tocoll.find()that can be used in conjunction with_disableOplog: true. #5586Expose Tinytest internals which can be used to extend it. #3541
Improve error message from
checkwhen passing in null. #5545Split up
standard-minifiersin separate CSS (standard-minifier-css) and JS minifiers(standard-minifier-js).standard-minifiersnow acts as an umbrella package for these 2 minifiers.Detect new Facebook user-agent in the
spiderablepackage. #5516Match.ObjectIncludingnow really requires plain objects. #6140Allow
git+URL schemes for npm dependencies. #844Expose options
disableOplog,pollingIntervalMs, andpollingThrottleMstoCursor.findfor tuning observe parameters on the server.Expose
dynamicHeadanddynamicBodyhooks in boilerplate generation allowing code to inject content into the body and head tags from the server. #3860Add methods of the form
BrowserPolicy.content.allow<ContentType>BlobUrl()to BrowserPolicy #5141Move
<script>tags to end of<body>to enable 'loading' UI to be inserted into the boilerplate #6375Adds WebAppInternals.setBundledJsCssUrlRewriteHook allowing apps to supply a hook function that can create a dynamic bundledJsCssPrefix at runtime. This is useful if you're using a CDN by giving you a way to ensure the CDN won't cache broken js/css resources during an app upgrade.
Patches contributed by GitHub users vereed, mitar, nathan-muir, robfallows, skishore, okland, Primigenus, zimme, welelay, rgoomar, bySabi, mbrookes, TomFreudenberg, TechPlexEngineer, zacharydenton, AlexeyMK, gwendall, dandv, devgrok, brianlukoff.
v.1.2.1, 2015-Oct-26
coll.insert()now uses a faster (but cryptographically insecure) algorithm to generate document IDs when called outside of a method and an_idfield is not explicitly passed. With this change, there are no longer two algorithms used to generate document IDs.Random.id()can still be used to generate cryptographically secure document IDs. #5161The
ecmascript-collectionspackage has been renamed toecmascript-runtimeand now includes a more complete selection of ES2015 polyfills and shims fromcore-js. The complete list can be found here.Check type of
onExceptionargument tobindEnvironment. #5271WebApp's
PORTenvironment variable can now be a named pipe to better support deployment on IIS on Windows. 4413Template.dynamiccan be now used as a block helper:{{#Template.dynamic}} ... {{/Template.dynamic}}#4756Collection#allow/denynow throw errors when passed falsy values. #5442source-maphas been updated to a newer patch version, which fixes major bugs in particular around loading bundles generated by Webpack. #5411checknow returns instead of throwing errors internally, which should make it much faster.checkis used in many core Meteor packages, so this should result in small performance improvements across the framework. #4584The
userEmailoption toMeteor.loginWithMeteorDeveloperAccounthas been renamed tologinHint, and now supports Google accounts as well. The old option still works for backwards compatibility. #2422 #5313The old
addFilesAPI for adding package assets no longer throws an error, making it easier to share packages between pre- and post-1.2 versions of Meteor. #5458Normally, you can't deploy to free meteor.com hosting or Galaxy from a non-Linux machine if you have local non-published packages with binary dependencies, nor can you run
meteor build --architecture SomeOtherArch. As a temporary workaround, if you set theMETEOR_BINARY_DEP_WORKAROUNDvariable, you will be able to deploy to Galaxy (but not free meteor.com hosting), and tarballs built withmeteor buildwill contain aprograms/server/setup.shshell script which should be run on the server to install those packages.
v1.2.0.2, 2015-Sept-28
Update Crosswalk plugin for Cordova to 1.3.1. #5267
Fix
meteor addfor a Cordova plugin using a Git URL with SHA.Upgraded the
promisepackage to use[email protected], which uses the globalPromiseconstructor in browsers that define it natively.Fix error in assigning attributes to
<body>tag when using Blaze templates orstatic-html. #5232
v1.2.0.1, 2015-Sept-22
- Fix incorrect publishing of packages with exports but no source. #5228
v1.2, 2015-Sept-21
There are quite a lot of changes in Meteor 1.2. See the Wiki for a shorter list of breaking changes you should be aware of when upgrading.
Core Packages
meteor-platformhas been deprecated in favor of the smallermeteor-base, with apps listing their other dependencies explicitly. The v1.2 upgrader will rewritemeteor-platformin existing apps.meteor-baseputs fewer symbols in the global namepsace, so it's no longer true that all apps have symbols likeRandomandEJSONin the global namespace.New packages:
ecmascript,es5-shim,ecmascript-collections,promise,static-html,jshint,babel-compilerNo longer include the
jsonpackage by default, which contains code forJSON.parseandJSON.stringify. (The last browser to not support JSON natively was Internet Explorer 7.)autoupdatehas been renamedhot-code-push
Meteor Accounts
Login attempts are now rate-limited by default. This can be turned off using
Accounts.removeDefaultRateLimit().loginWithPasswordnow matches username or email in a case insensitive manner. If there are multiple users with a username or email only differing in case, a case sensitive match is required. #550loginWithGithubnow requestsuser:emailscope by default, and attempts to fetch the user's emails. If no public email has been set, we use the primary email instead. We also store the complete list of emails. #4545When an account's email address is verified, deactivate other verification tokens. #4626
Fix bug where blank page is shown when an expired login token is present. #4825
Fix
OAuth1Binding.prototype.callwhen making requests to Twitter with a large parameter set.Directions for setting up Google OAuth in accounts-ui have been updated to match Google's new requirements.
Add
Accounts.oauth.unregisterServicemethod, and ensure that users can only log in with currently registered services. #4014The
accounts-basenow defines reusableAccountsClientandAccountsServerconstructors, so that users can create multiple independent instances of theAccountsnamespace. #4233Create an index for
Meteor.usersonservices.email.verificationTokens.token(instead ofemails.validationTokens.token, which never was used for anything). #4482Remove an IE7-specific workaround from accounts-ui. #4485
Livequery
- Improved server performance by reducing overhead of processing oplog after database writes. Improvements are most noticeable in case when a method is doing a lot of writes on collections with plenty of active observers. #4694
Mobile
The included Cordova tools have been updated to the latest version 5.2.0. This includes Cordova Android 4.1 and Cordova iOS 3.9. These updates may require you to make changes to your app. For details, see the [Cordova release notes] (https://cordova.apache.org/#news) for for the different versions.
Thanks to Cordova Android's support for pluggable web views, it is now possible to install the [Crosswalk plugin] (https://crosswalk-project.org/documentation/cordova/cordova_4.html), which offers a hugely improved web view on older Android versions. You can add the plugin to your app with
meteor add crosswalk.The bundled Android tools have been removed and a system-wide install of the Android SDK is now required. This should make it easier to keep the development toolchain up to date and helps avoid some difficult to diagnose failures. If you don't have your own Android tools installed already, you can find more information about installing the Android SDK for [Mac] (https://github.com/meteor/meteor/wiki/Mobile-Dev-Install:-Android-on-Mac) or [Linux] (https://github.com/meteor/meteor/wiki/Mobile-Dev-Install:-Android-on-Linux).
As part of moving to npm, many Cordova plugins have been renamed. Meteor should perform conversions automatically, but you may want to be aware of this to avoid surprises. See [here] (https://cordova.apache.org/announcements/2015/04/21/plugins-release-and-move-to-npm.html) for more information.
Installing plugins from the local filesystem is now supported using
file://URLs, which should make developing your own plugins more convenient. It is also needed as a temporary workaround for using the Facebook plugin. Relative references are interpreted relative to the Meteor project directory. (As an example,meteor add cordova:phonegap-facebook-plugin@file://../phonegap-facebook-pluginwould attempt to install the plugin from the same directory you Meteor project directory is located in.)Meteor no longer supports installing Cordova plugins from tarball URLs, but does support Git URLs with a SHA reference (like
https://github.com/apache/cordova-plugin-file#c452f1a67f41cb1165c92555f0e721fbb07329cc). Existing GitHub tarball URLs are converted automatically.Allow specifying a
buildNumberinApp.info, which is used to set theandroid-versionCodeandios-CFBundleVersionin theconfig.xmlof the Cordova project. The build number is used to differentiate between different versions of the app, and should be incremented before distributing a built app to stores or testing services. #4048Other changes include performance enhancements when building and running, and improved requirements checking and error reporting.
Known issue: we do not currently show logging output when running on the iOS Simulator. As a workaround, you can
meteor run ios-deviceto open the project in Xcode and watch the output there.
Templates/Blaze
New syntax: Handlebars sub-expressions are now supported -- as in,
{{helper (anotherHelper arg1 arg2)}}-- as well as new block helper forms#each .. in ..and#let x=y. See https://github.com/meteor/meteor/tree/devel/packages/spacebarsAdd a special case for the new
react-template-helperpackage -- don't let templates use {{> React}} with siblings sinceReact.renderassumes it's being rendered into an empty container element. (This lets us throw the error when compiling templates rather than when the app runs.)Improve parsing of
<script>and<style>tags. #3797Fix a bug in
observe-sequence. The bug was causing unnecessary rerenderings in an instance of#eachblock helper followed by false "duplicate ids" warnings. #4049TemplateInstance#subscribenow has a newconnectionoption, which specifies which connection should be used when making the subscription. The default isMeteor.connection, which is the connection used when callingMeteor.subscribe.Fix external
<script>tags in body or templates. #4415Fix memory leak. #4289
Avoid recursion when materializing DOM elements, to avoid stack overflow errors in certain browsers. #3028
Blaze and Meteor's built-in templating are now removable using
meteor remove blaze-html-templates. You can add back support for staticheadandbodytags in.htmlfiles by using thestatic-htmlpackage.
DDP
Websockets now support the
permessage-deflateextension, which compresses data on the wire. It is enabled by default on the server. To disable it, set$SERVER_WEBSOCKET_COMPRESSIONto0. To configure compression options, set$SERVER_WEBSOCKET_COMPRESSIONto a JSON object that will be used as an argument todeflate.configure. Compression is supported on the client side by Meteor's Node DDP client and by browsers including Chrome, Safari, and Firefox 37.The
ddppackage has been split intoddp-clientandddp-serverpackages; usingddpis equivalent to using both. This allows you to use the Node DDP client without adding the DDP server to your app. #4191 #3452On the client,
Meteor.callnow takes athrowStubExceptionsoption; if set, exceptions thrown by method stubs will be thrown instead of logged, and the method will not be invoked on the server. #4202sub.ready()should return true inside that subscription'sonReadycallback. #4614Fix method calls causing broken state when socket is reconnecting. #5104
Isobuild
Build plugins will no longer process files whose names match the extension exactly (with no extra dot). If your build plugin needs to match filenames exactly, you should use the new build plugin API in this release which supplies a special
filenamesoption. #3985Adding the same file twice in the same package is now an error. Previously, this could either lead to the file being included multiple times, or to a build time crash.
You may now specify the
bareoption for JavaScript files on the server. Previous versions only allowed this on the client. #3681Ignore
node_modulesdirectories in apps instead of processing them as Meteor source code. #4457 #4452Backwards-incompatible change for package authors: Static assets in package.js files must now be explicitly declared by using
addAssetsinstead ofaddFiles. Previously, any file that didn't have a source handler was automatically registered as a server-side asset. TheisAssetoption toaddFilesis also deprecated in favor ofaddAssets.Built files are now always annotated with line number comments, to improve the debugging experience in browsers that don't support source maps.
There is a completely new API for defining build plugins that cache their output. There are now special APIs for defining linters and minifiers in addition to compilers. The core Meteor packages for
less,coffee,stylusandhtmlfiles have been updated to use this new API. Read more on the Wiki page.
CSS
LESS and Stylus now support cross-package imports.
CSS concatenation and minification is delegated to the
standard-minifierspackage, which is present by default (and added to existing apps by the v1.2 upgrader).CSS output is now split into multiple stylesheets to avoid hitting limits on rules per stylesheet in certain versions of Internet Explorer. #1876
Mongo
The oplog observe driver now properly updates queries when you drop a database. #3847
MongoID logic has been moved out of
minimongointo a new package calledmongo-id.Fix Mongo upserts with dotted keys in selector. #4522
meteor command-line tool
You can now create three new example apps with the command line tool. These are the apps from the official tutorials at http://meteor.com/tutorials, which demonstrate building the same app with Blaze, Angular, and React. Try these apps with:
meteor create --example simple-todos meteor create --example simple-todos-react meteor create --example simple-todos-angularmeteor shellno longer crashes when piped from another command.Avoid a race condition in
meteor --testand work with newer versions of the Velocity package. #3957Improve error handling when publishing packages. #3977
Improve messaging around publishing binary packages. #3961
Preserve the value of
_inmeteor shell. #4010meteor mongonow works on OS X when certain non-ASCII characters are in the pathname, as long as thepgreputility is installed (it ships standard with OS X 10.8 and newer). #3999meteor runno longer ignores (and often reverts) external changes to.meteor/versionswhich occur while the process is running. #3582Fix crash when downloading two builds of the same package version simultaneously. #4163
Improve messages printed by
meteor update, displaying list of packages that are not at the latest version available.When determining file load order, split file paths on path separator before comparing path components alphabetically. #4300
Fix inability to run
mongoddue to lack of locale configuration on some platforms, and improve error message if the failure still occurs. #4019New
meteor lintcommand.
Minimongo
The
$pushquery modifier now supports a$positionargument. #4312c.update(selector, replacementDoc)no longer shares mutable state between replacementDoc and Minimongo internals. #4377
Email.sendnow has a new option,attachments, in the same style asmailcomposer. Details here.
Tracker
New
Tracker.Computation#onStopmethod. #3915ReactiveDicthas two new methods,clearandall.clearresets the dictionary as if no items had been added, meaning all calls togetwill returnundefined.allconverts the dictionary into a regular JavaScript object with a snapshot of the keys and values. Inside an autorun,allregisters a dependency on any changes to the dictionary. #3135
Utilities
New
beforeSendoption toHTTP.callon the client allows you to directly access theXMLHttpRequestobject and abort the call. #4419 #3243 #3266Parse
application/javascriptandapplication/x-javascriptHTTP replies as JSON too. #4595Match.testfrom thecheckpackage now properly compares boolean literals, just like it does with Numbers and Strings. This applies to thecheckfunction as well.Provide direct access to the
mailcomposernpm module used by theemailpackage onEmailInternals.NpmModules. Allow specifying aMailComposerobject toEmail.sendinstead of individual options. #4209Expose
Spiderable.requestTimeoutMsfromspiderablepackage to allow apps to set the timeout for running phantomjs.The
spiderablepackage now reports the URL it's trying to fetch on failure.
Other bug fixes and improvements
Upgraded dependencies:
Node: 0.10.40 (from 0.10.36)
uglify-js: 2.4.20 (from 2.4.17)
http-proxy: 1.11.1 (from 1.6.0)
Meteor.loginWithGooglenow supportsprompt. Choose a prompt to always be displayed on Google login.Upgraded
coffeescriptpackage to depend on NPM packages [email protected] and [email protected]. #4302Upgraded
fastclickto 1.0.6 to fix an issue in iOS Safari. #4393Fix
Error: Can't render headers after they are sent to the client. #4253 #4750Meteor.settings.publicis always available on client and server, and modifications made on the server (for example, during app initialization) affect the value seen by connecting clients. #4704
Windows
Increase the buffer size for
netstatwhen looking for running Mongo servers. #4125The Windows installer now always fetches the latest available version of Meteor at runtime, so that it doesn't need to be recompiled for every release.
Fix crash in
meteor mongoon Windows. #4711
v1.1.0.3, 2015-Aug-03
Accounts
- When using Facebook API version 2.4, properly fetch
emailand other fields. Facebook recently forced all new apps to use version 2.4 of their API. #4743
v1.1.0.2, 2015-Apr-06
meteor command-line tool
- Revert a change in 1.1.0.1 that caused
meteor mongoto fail on some Linux systems. #4115, #4124, #4134
v1.1.0.1, 2015-Apr-02
Blaze
- Fix a regression in 1.1 in Blaze Templates: an error happening when View is
invalidated immediately, causing a client-side crash (accessing
destroyMembersofundefined). #4097
v1.1, 2015-Mar-31
Windows Support
The Meteor command line tool now officially supports Windows 7, Windows 8.1, Windows Server 2008, and Windows Server 2012. It can run from PowerShell or Command Prompt.
There is a native Windows installer that will be available for download from https://www.meteor.com/install starting with this release.
In this release, Meteor on Windows supports all features available on Linux and Mac except building mobile apps with PhoneGap/Cordova.
The
meteor admin get-machinecommand now supports an additional architecture,os.windows.x86_32, which can be used to build binary packages for Windows.
Version Solver
The code that selects compatible package versions for
meteor updateand resolves conflicts onmeteor addhas been rewritten from the ground up. The core solver algorithm is now based on MiniSat, an open-source SAT solver, improving performance and maintainability.Refresh the catalog instead of downgrading packages when the versions in
.meteor/versionsaren't in the cache. #3653Don't downgrade packages listed in
.meteor/packages, or upgrade to a new major version, unless the new flag--allow-incompatible-updateis passed as an override.Error messages are more detailed when constraints are unsatisfiable.
Prefer "patched" versions of new indirect dependencies, and take patches to them on
meteor update(for example,1.0.1or1.0.0_1over1.0.0).Version Solver is instrumented for profiling (
METEOR_PROFILE=1in the environment).Setting the
METEOR_PRINT_CONSTRAINT_SOLVER_INPUTenvironment variable prints information useful for diagnosing constraint solver bugs.
Tracker
Schedule the flush cycle using a better technique than
setTimeoutwhen available. #3889Yield to the event loop during the flush cycle, unless we're executing a synchronous
Tracker.flush(). #3901Fix error reporting not being source-mapped properly. #3655
Introduce a new option for
Tracker.autorun-onError. This callback can be used to handle errors caught in the reactive computations. #3822
Blaze
- Fix stack overflow from nested templates and helpers by avoiding recursion during rendering. #3028
meteor command-line tool
- Don't fail if
npmprints more than 200K. #3887
Other bug fixes and improvements
Upgraded dependencies:
uglify-js: 2.4.17 (from 2.4.13)
Patches contributed by GitHub users hwillson, mitar, murillo128, Primigenus, rjakobsson, and tmeasday.
v1.0.5, 2015-Mar-25
This version of Meteor now uses version 2.2 of the Facebook API for authentication, instead of 1.0. If you use additional Facebook API methods beyond login, you may need to request new permissions.
Facebook will automatically switch all apps to API version 2.0 on April 30th, 2015. Please make sure to update your application's permissions and API calls by that date.
For more details, see https://github.com/meteor/meteor/wiki/Facebook-Graph-API-Upgrade
v1.0.4.2, 2015-Mar-20
- Fix regression in 1.0.4 where using Cordova for the first time in a project with hyphens in its directory name would fail. #3950
v1.0.4.1, 2015-Mar-18
- Fix regression in 1.0.4 where
meteor publish-for-archonly worked for packages without colons in their name. #3951
v1.0.4, 2015-Mar-17
Mongo Driver
Meteor is now tested against MongoDB 2.6 by default (and the bundled version used by
meteor runhas been upgraded). It should still work fine with MongoDB 2.4. Previous versions of Meteor mostly worked with MongoDB 2.6, with a few caveats:- Some upsert invocations did not work with MongoDB in previous versions of Meteor.
- Previous versions of Meteor required setting up a special "user-defined
role" with access to the
system.replsettable to use the oplog observe driver with MongoDB 2.6. These extra permissions are not required with this version of Meteor.
The MongoDB command needed to set up user permissions for the oplog observe driver is slightly different in MongoDB 2.6; see https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver for details.
We have also tested Meteor against the recently-released MongoDB 3.0.0. While we are not shipping MongoDB 3.0 with Meteor in this release (preferring to wait until its deployment is more widespread), we believe that Meteor 1.0.4 apps will work fine when used with MongoDB 3.0.0 servers.
Fix 0.8.1 regression where failure to connect to Mongo at startup would log a message but otherwise be ignored. Now it crashes the process, as it did before 0.8.1. #3038
Use correct transform for allow/deny rules in
updatewhen different rules have different transforms. #3108Provide direct access to the collection and database objects from the npm Mongo driver via new
rawCollectionandrawDatabasemethods onMongo.Collection. #3640Observing or publishing an invalid query now throws an error instead of effectively hanging the server. #2534
Livequery
If the oplog observe driver gets too far behind in processing the oplog, skip entries and re-poll queries instead of trying to keep up. #2668
Optimize common cases faced by the "crossbar" data structure (used by oplog tailing and DDP method write tracking). #3697
The oplog observe driver recovers from failed attempts to apply the modifier from the oplog (eg, because of empty field names).
Minimongo
When acting as an insert,
c.upsert({_id: 'x'}, {foo: 1})now uses the_idof'x'rather than a random_idin the Minimongo implementation ofupsert, just like it does forc.upsert({_id: 'x'}, {$set: {foo: 1}}). (The previous behavior matched a bug in the MongoDB 2.4 implementation of upsert that is fixed in MongoDB 2.6.) #2278Avoid unnecessary work while paused in minimongo.
Fix bugs related to observing queries with field filters:
changedcallbacks should not trigger unless a field in the filter has changed, andchangedcallbacks need to trigger when a parent of an included field is unset. #2254 #3571Disallow setting fields with empty names in minimongo, to match MongoDB 2.6 semantics.
DDP
Subscription handles returned from
Meteor.subscribeandTemplateInstance#subscribenow have asubscriptionIdproperty to identify which subscription the handle is for.The
onErrorcallback toMeteor.subscribehas been replaced with a more generalonStopcallback that has an error as an optional first argument. TheonStopcallback is called when the subscription is terminated for any reason.onErroris still supported for backwards compatibility. #1461The return value from a server-side
Meteor.callorMeteor.applyis now a clone of what the function returned rather than sharing mutable state. #3201Make it easier to use the Node DDP client implementation without running a web server too. #3452
Blaze
Template instances now have a
subscribemethod that functions exactly likeMeteor.subscribe, but stops the subscription when the template is destroyed. There is a new method on Template instances calledsubscriptionsReady()which is a reactive function that returns true when all of the subscriptions made withTemplateInstance#subscribeare ready. There is also a built-in helper that returns the same thing and can be accessed withTemplate.subscriptionsReadyinside any template.Add
onRendered,onCreated, andonDestroyedmethods toTemplate. Assignments toTemplate.foo.renderedand so forth are deprecated but are still supported for backwards compatibility.Fix bug where, when a helper or event handler was called from inside a custom block helper,
Template.instance()returned theTemplate.contentBlocktemplate instead of the actual user-defined template, making it difficult to useTemplate.instance()for local template state.Template.instance()now works insideTemplate.body. #3631Allow specifying attributes on
<body>tags in templates.Improve performance of rendering large arrays. #3596
Isobuild
In
package.jsfiles,Npm.requirecan only require built-in Node modules (and dev bundle modules, though you shouldn't depend on that), not the modules from its ownNpm.depends. Previously, such code would work but only on the second time apackage.jswas executed.Ignore vim swap files in the
publicandprivatedirectories. #3322Fix regression in 1.0.2 where packages might not be rebuilt when the compiler version changes.
Meteor Accounts
The
accounts-passwordAccounts.emailTemplatescan now specify arbitrary emailheaders. Thefromaddress can now be set separately on the individual templates, and is a function there rather than a static string. #2858 #2854Add login hooks on the client:
Accounts.onLoginandAccounts.onLoginFailure. #3572Add a unique index to the collection that stores OAuth login configuration to ensure that only one configuration exists per service. #3514
On the server, a new option
Accounts.setPassword(user, password, { logout: false })overrides the default behavior of logging out all logged-in connections for the user. #3846
Webapp
spiderablenow supports escaped#!fragments. #2938Disable
appcacheon Firefox by default. #3248Don't overly escape
Meteor.settings.publicand other parts of__meteor_runtime_config__. #3730Reload the client program on
SIGHUPor Node-specific IPC messages, notSIGUSR2.
meteor command-line tool
Enable tab-completion of global variables in
meteor shell. #3227meteor login --emailno longer takes an ignored argument. #3532Fix regression in 1.0.2 where
meteor run --settings swould ignore errors reading or parsing the settings file. #3757Fix crash in
meteor publishin some cases when the package is inside an app. #3676Fix crashes in
meteor search --show-allandmeteor search --maintainer. #3636Kill PhantomJS processes after
meteor --test, and only run the app once. #3205 #3793Give a better error when Mongo fails to start up due to a full disk. #2378
After killing existing
mongodservers, also clear themongod.lockfile.Stricter validation for package names: they cannot begin with a hyphen, end with a dot, contain two consecutive dots, or start or end with a colon. (No packages on Atmosphere fail this validation.) Additionally,
meteor create --packageapplies the same validation asmeteor publishand disallows packages with multiple colons. (Packages with multiple colons likelocal-test:iron:routerare used internally bymeteor test-packagesso that is not a strict validation rule.)meteor create --packagenow no longer creates a directory with the full name of the package, since Windows file systems cannot have colon characters in file paths. Instead, the command now creates a directory named the same as the second part of the package name after the colon (without the username prefix).
Meteor Mobile
Upgrade the Cordova CLI dependency from 3.5.1 to 4.2.0. See the release notes for the 4.x series of the Cordova CLI on Apache Cordova.
Related to the recently discovered attack vectors in Android Cordova apps, Meteor Cordova apps no longer allow access to all domains by default. If your app access external resources over XHR, you need to add them to the whitelist of allowed domains with the newly added
App.accessRulemethod in yourmobile-config.jsfile.Upgrade Cordova Plugins dependencies in Meteor Core packages:
org.apache.cordova.file: from 1.3.0 to 1.3.3org.apache.cordova.file-transfer: from 0.4.4 to 0.5.0org.apache.cordova.splashscreen: from 0.3.3 to 1.0.0org.apache.cordova.console: from 0.2.10 to 0.2.13org.apache.cordova.device: from 0.2.11 to 0.3.0org.apache.cordova.statusbar: from 0.1.7 to 0.1.10org.apache.cordova.inappbrowser: from 0.5.1 to 0.6.0org.apache.cordova.inappbrowser: from 0.5.1 to 0.6.0Use the newer
ios-simbinary, compiled with Xcode 6 on OS X Mavericks.
Tracker
- Use
Session.set({k1: v1, k2: v2})to set multiple values at once.
Utilities
- Provide direct access to all options supported by the
requestnpm module via the new server-onlynpmRequestOptionsoption toHTTP.call. #1703
Other bug fixes and improvements
Many internal refactorings towards supporting Meteor on Windows are in this release.
Remove some packages used internally to support legacy MDG systems (
application-configuration,ctl,ctl-helper,follower-livedata,dev-bundle-fetcher, andstar-translate).Provide direct access to some npm modules used by core packages on the
NpmModulesfield ofWebAppInternals,MongoInternals, andHTTPInternals.Upgraded dependencies:
node: 0.10.36 (from 0.10.33)
Fibers: 1.0.5 (from 1.0.1)
MongoDB: 2.6.7 (from 2.4.12)
openssl in mongo: 1.0.2 (from 1.0.1j)
MongoDB driver: 1.4.32 (from 1.4.1)
bson: 0.2.18 (from 0.2.7)
request: 2.53.0 (from 2.47.0)
Patches contributed by GitHub users 0a-, awatson1978, awwx, bwhitty, christianbundy, d4nyll, dandv, DanielDent, DenisGorbachev, fay-jai, gsuess, hwillson, jakozaur, meonkeys, mitar, netanelgilad, queso, rbabayoff, RobertLowe, romanzolotarev, Siilwyn, and tmeasday.
v.1.0.3.2, 2015-Feb-25
- Fix regression in 1.0.3 where the
meteortool could crash when downloading the second build of a given package version; for example, when runningmeteor deployon an OSX or 32-bit Linux system for an app containing a binary package. #3761
v.1.0.3.1, 2015-Jan-20
Rewrite
meteor showandmeteor searchto show package information for local packages and to show if the package is installed for non-local packages. Introduce the--show-allflag, and deprecate the--show-unmigratedand--show-old flags. Introduce the--ejsonflag to output an EJSON object.Support README.md files in
meteor publish. Take in the documentation file inpackage.js(set toREADME.mdby default) and upload it to the server at publication time. Excerpt the first non-header Markdown section for use inmeteor show.Support updates of package version metadata after that version has been published by running
meteor publish --updatefrom the package directory.Add
meteor test-packages --velocity(similar tometeor run --test). #3330Fix
meteor update <packageName>to update<packageName>even if it's an indirect dependency of your app. #3282Fix stack trace when a browser tries to use the server like a proxy. #1212
Fix inaccurate session statistics and possible multiple invocation of Connection.onClose callbacks.
Switch CLI tool filesystem calls from synchronous to yielding (pro: more concurrency, more responsive to signals; con: could introduce concurrency bugs)
Don't try to refresh client app in the runner unless the app actually has the autoupdate package. #3365
Fix custom release banner logic. #3353
Apply HTTP followRedirects option to non-GET requests. #2808
Clean up temporary directories used by package downloads sooner. #3324
If the tool knows about the requested release but doesn't know about the build of its tool for the platform, refresh the catalog rather than failing immediately. #3317
Fix
meteor --get-readyto not add packages to your app.Fix some corner cases in cleaning up app processes in the runner. Drop undocumented
--keepalivesupport. #3315Fix CSS autoupdate when
$ROOT_URLhas a non-trivial path. #3111Save Google OAuth idToken to the User service info object.
Add git info to
meteor --version.Correctly catch a case of illegal
Tracker.flushduringTracker.autorun. #3037Upgraded dependencies:
jquery: 1.11.2 (from 1.11.0)
Patches by GitHub users DanielDent, DanielDornhardt, PooMaster, Primigenus, Tarang, TomFreudenberg, adnissen, dandv, fay-jai, knownasilya, mquandalle, ogourment, restebanez, rissem, smallhelm and tmeasday.
v1.0.2.1, 2014-Dec-22
Fix crash in file change watcher. #3336
Allow
meteor test-packages packages/*even if not all package directories have tests. #3334Fix typo in
meteor shelloutput. #3326
v1.0.2, 2014-Dec-19
Improvements to the meteor command-line tool
A new command called
meteor shellattaches an interactive terminal to an already-running server process, enabling inspection and execution of server-side data and code, with dynamic tab completion of variable names and properties. To seemeteor shellin action, typemeteor runin an app directory, then (in another terminal) typemeteor shellin the same app directory. You do not have to wait for the app to start before typingmeteor shell, as it will automatically connect when the server is ready. Note thatmeteor shellcurrently works for local development only, and is not yet supported for apps running on remote hosts.We've done a major internal overhaul of the
meteorcommand-line tool with an eye to correctness, maintainability, and performance. Some details include:Refresh the package catalog for build commands only when an error occurs that could be fixed by a refresh, not for every build command.
Never run the constraint solver to select package versions more than once per build.
Built packages ("isopacks") are now cached inside individual app directories instead of inside their source directories.
meteor runstarts Mongo in parallel with building the application.The constraint solver no longer leaves a
versions.jsonfile in your packages source directories; when publishing a package that is not inside an app, it will leave a.versionsfile (with the same format as.meteor/versions) which you should check into source control.The constraint solver's model has been simplified so that plugins must use the same version of packages as their surrounding package when built from local source.
Using
meteor debugno longer requires manually continuing the debugger when your app restarts, and it no longer overwrites the symbol_inside your app.Output from the command-line tool is now word-wrapped to the width of your terminal.
Remove support for the undocumented earliestCompatibleVersion feature of the package system.
Reduce CPU usage and disk I/O bandwidth by using kernel file-system change notification events where possible. On file systems that do not support these events (NFS, Vagrant Virtualbox shared folders, etc), file changes will only be detected every 5 seconds; to detect changes more often in these cases (but use more CPU), set the
METEOR_WATCH_FORCE_POLLINGenvironment variable. #2135Reduce CPU usage by fixing a check for a parent process in
meteor runthat was happening constantly instead of every few seconds. #3252Fix crash when two plugins defined source handlers for the same extension. #3015 #3180
Fix bug (introduced in 0.9.3) where the warning about using experimental versions of packages was printed too often.
Fix bug (introduced in 1.0) where
meteor update --patchcrashed.Fix bug (introduced in 0.9.4) where banners about new releases could be printed too many times.
Fix crash when a package version contained a dot-separated pre-release part with both digits and non-digits. #3147
Corporate HTTP proxy support is now implemented using our websocket library's new built-in implementation instead of a custom implementation. #2515
Blaze
Add default behavior for
Template.parentDatawith no arguments. This selects the first parent. #2861Fix
Blaze.removeon a template's view to correctly remove the DOM elements when the template was inserted usingBlaze.renderWithData. #3130Allow curly braces to be escaped in Spacebars. Use the special sequences
{{|and{{{|to insert a literal{{or{{{.
Meteor Accounts
Allow integration with OAuth1 servers that require additional query parameters to be passed with the access token. #2894
Expire a user's password reset and login tokens in all circumstances when their password is changed.
Other bug fixes and improvements
Some packages are no longer released as part of the core release process: amplify, backbone, bootstrap, d3, jquery-history, and jquery-layout. This means that new versions of these packages can be published outside of the full Meteor release cycle.
Require plain objects as the update parameter when doing replacements in server-side collections.
Fix audit-argument-checks spurious failure when an argument is NaN. #2914
Upgraded dependencies
- node: 0.10.33 (from 0.10.29)
- source-map-support: 0.2.8 (from 0.2.5)
- semver: 4.1.0 (from 2.2.1)
- request: 2.47.0 (from 2.33.0)
- tar: 1.0.2 (from 1.0.1)
- source-map: 0.1.40 (from 0.1.32)
- sqlite3: 3.0.2 (from 3.0.0)
- phantomjs npm module: 1.9.12 (from 1.8.1-1)
- http-proxy: 1.6.0 (from a fork of 1.0.2)
- esprima: 1.2.2 (from an unreleased 1.1-era commit)
- escope: 1.0.1 (from 1.0.0)
- openssl in mongo: 1.0.1j (from 1.0.1g)
- faye-websocket: 0.8.1 (from using websocket-driver instead)
- MongoDB: 2.4.12 (from 2.4.9)
Patches by GitHub users andylash, anstarovoyt, benweissmann, chrisbridgett, colllin, dandv, ecwyne, graemian, JamesLefrere, kevinchiu, LyuGGang, matteodem, mitar, mquandalle, musically-ut, ograycode, pcjpcj2, physiocoder, rgoomar, timhaines, trusktr, Urigo, and zol.
v1.0.1, 2014-Dec-09
- 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.
v1.0, 2014-Oct-28
New Features
Add the
meteor admin get-machinecommand to make it easier to publish packages with binary dependencies for all architectures.meteor publishno longer publishes builds automatically if your package has binary NPM dependencies.New
localmarketexample, highlighting Meteor's support for mobile app development.Restyle the
leaderboardexample, and optimize it for both desktop and mobile.
Performance
Reduce unnecessary syncs with the package server, which speeds up startup times for many commands.
Speed up
meteor deployby not bundling unnecessary files and programs.To make Meteor easier to use on slow or unreliable network connections, increase timeouts for DDP connections that the Meteor tool uses to communicate with the package server. #2777, #2789.
Mobile App Support
Implemented reasonable default behavior for launch screens on mobile apps.
Don't build for Android when only the iOS build is required, and vice versa.
Fix bug that could cause mobile apps to stop being able to receive hot code push updates.
Fix bug where Cordova clients connected to http://example.com instead of https://example.com when https:// was specified in the --mobile-server option. #2880
Fix stack traces when attempting to build or run iOS apps on Linux.
Print a warning when building an app with mobile platforms and outputting the build into the source tree. Outputting a build into the source tree can cause subsequent builds to fail because they will treat the build output as source files.
Exit from
meteor runwhen new Cordova plugins or platforms are added, since we don't support hot code push for new plugins or platforms.Fix quoting of arguments to Cordova plugins.
The
accounts-twitterpackage now works in Cordova apps in local development. For workarounds for other login providers in local development mode, see https://github.com/meteor/meteor/wiki/OAuth-for-mobile-Meteor-clients.
Packaging
meteor publish-for-archcan publish packages built with different Meteor releases.Fix default
api.versionsFromfield in packages created withmeteor create --package.Fix bug where changes in an app's .meteor/versions file would not cause the app to be rebuilt.
Other bug fixes and improvements
Use TLSv1 in the
spiderablepackage, for compatibility with servers that have disabled SSLv3 in response to the POODLE bug.Work around the
meteor runproxy occasionally running out of sockets.Fix bug with regular expressions in minimongo. #2817
Add READMEs for several core packages.
Include protocols in URLs printed by
meteor deploy.Improve error message for limited ordered observe. #1643
Fix missing dependency on
randomin theautoupdatepackage. #2892Fix bug where all CSS would be removed from connected clients if a CSS-only change is made between local development server restarts or when deploying with
meteor deploy.Increase height of the Google OAuth popup to the Google-recommended value.
Fix the layout of the OAuth configuration dialog when used with Bootstrap.
Allow build plugins to override the 'bare' option on added source files. #2834
Patches by GitHub users DenisGorbachev, ecwyne, mitar, mquandalle, Primigenus, svda, yauh, and zol.
v0.9.4.1, 2014-Dec-09 (backport)
- 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.9.4, 2014-Oct-13
New Features
The new
meteor debugcommand and--debug-portcommand line option tometeor runallow you to easily use node-inspector to debug your server-side code. Add adebuggerstatement to your code to create a breakpoint.Add new a
meteor run --testcommand that runs Velocity tests in your app .Add new callbacks
Accounts.onResetPasswordLink,Accounts.onEnrollmentLink, andAccounts.onEmailVerificationLinkthat make it easier to build custom user interfaces on top of the accounts system. These callbacks should be registered beforeMeteor.startupfires, and will be called if the URL matches a link in an email sent byAccounts.resetPassword, etc. See https://docs.meteor.com/#Accounts-onResetPasswordLink.A new configuration file for mobile apps,
<APP>/mobile-config.js. This allows you to set app metadata, icons, splash screens, preferences, and PhoneGap/Cordova plugin settings without needing acordova_build_overridedirectory. See https://docs.meteor.com/#mobileconfigjs.
API Changes
Rename
{{> UI.dynamic}}to{{> Template.dynamic}}, and likewise withUI.contentBlockandUI.elseBlock. The UI namespace is no longer used anywhere except for backwards compatibility.Deprecate the
Template.someTemplate.myHelper = ...syntax in favor ofTemplate.someTemplate.helpers(...). Using the older syntax still works, but prints a deprecation warning to the console.Package.registerBuildPluginits associated functions have been added to the public API, cleaned up, and documented. The new function is identical to the earlier transitionalregisterBuildPlugin except for minor backwards-compatible API changes. See https://docs.meteor.com/#Package-registerBuildPluginRename the
showdownpackage tomarkdown.Deprecate the
amplify,backbone,bootstrap, andd3integration packages in favor of community alternatives. These packages will no longer be maintained by MDG.
Tool Changes
Improved output from
meteor buildto make it easier to publish mobile apps to the App Store and Play Store. See the wiki pages for instructions on how to publish your iOS and Android apps.Packages can now be marked as debug-mode only by adding
debugOnly: truetoPackage.describe. Debug-only packages are not included in the app when it is bundled for production (meteor buildormeteor run --production). This allows package authors to build packages specifically for testing and debugging without increasing the size of the resulting app bundle or causing apps to ship with debug functionality built in.Rework the process for installing mobile development SDKs. There is now a
meteor install-sdkcommand that automatically install what software it can and points to documentation for the parts that require manual installation.The
.meteor/cordova-platformsfile has been renamed to.meteor/platformsand now includes the defaultserverandbrowserplatforms. The default platforms can't currently be removed from a project, though this will be possible in the future. The old file will be automatically migrated to the new one when the app is run with Meteor 0.9.4 or above.The
unipackage.jsonfile inside downloaded packages has been renamed toisopack.jsonand has an improved forwards-compatible format. To maintain backwards compatibility with previous releases, packages will be built with both files.The local package metadata cache now uses SQLite, which is much faster than the previous implementation. This improves
meteorcommand line tool startup time.The constraint solver used by the client to find compatible versions of packages is now much faster.
The
--portoption tometeor runnow requires a numeric port (e.g.meteor run --port example.comis no longer valid).The
--mobile-portoptionmeteor runhas been reworked. The option is now--mobile-serverinmeteor runand--serverinmeteor build.--serveris required formeteor buildin apps with mobile platforms installed.--mobile-serverdefaults to an automatically detected IP address on port 3000, and--serverrequires a hostname but defaults to port 80 if a port is not specified.Operations that take longer than a few seconds (e.g. downloading packages, installing the Android SDK, etc) now show a progress bar.
Complete support for using an HTTP proxy in the
meteorcommand line tool. Now all DDP connections can work through a proxy. Use the standardhttp_proxyenvironment variable to specify your proxy endpoint. #2515
Bug Fixes
Fix behavior of ROOT_URL with path ending in
/.Fix source maps when using a ROOT_URL with a path. #2627
Change the mechanism that the Meteor tool uses to clean up app server processes. The new mechanism is more resilient to slow app bundles and other CPU-intensive tasks. #2536, #2588.
Patches by GitHub users cryptoquick, Gaelan, jperl, meonkeys, mitar, mquandalle, prapicault, pscanf, richguan, rick-golden-healthagen, rissem, rosh93, rzymek, and timoabend
v0.9.3.1, 2014-Sep-30
Don't crash when failing to contact the package server. #2713
Allow more than one dash in package versions. #2715
v0.9.3, 2014-Sep-25
More Package Version Number Flexibility
Packages now support relying on multiple major versions of their dependencies (eg
[email protected] || 2.0.0). Additionally, you can now callapi.versionsFrom(<release>)multiple times, or with an array (egapi.versionsFrom([<release1>, <release2>]). Meteor will interpret this to mean that the package will work with packages from all the listed releases.Support for "wrapped package" version numbers. There is now a
_field in version numbers. The_field must be an integer, and versions with the_are sorted after versions without. This allows using the upstream version number as the Meteor package version number and being able to publish multiple version of the Meteor package (e.g.[email protected]_2).
Note: packages using the || operator or the _ symbol in their
versions or dependencies will be invisible to pre-0.9.3 users. Meteor
versions 0.9.2 and before do not understand the new version formats and
will not be able to use versions of packages that use the new features.
Other Command-line Tool Improvements
More detailed constraint solver output. Meteor now tells you which constraints prevent upgrading or adding new packages. This will make it much easier to update your app to new versions.
Better handling of pre-release versions (e.g. versions with
-). Pre-release packages will now be included in an app if and only if there is no way to meet the app's constraints without using a pre-release package.Add
meteor admin set-unmigratedto allow maintainers to hide pre-0.9.0 packages inmeteor searchandmeteor show. This will not stop users from continuing to use the package, but it helps prevent new users from finding old non-functional packages.Progress bars for time-intensive operations, like downloading large packages.
Other Changes
Offically support
Meteor.wrapAsync(renamed fromMeteor._wrapAsync). Additionally,Meteor.wrapAsyncnow lets you pass an object to bind asthisin the wrapped call. See https://docs.meteor.com/#meteor_wrapasync.The
reactive-dictpackage now allows an optional name argument to enable data persistence during hot code push.
Patches by GitHub users evliu, meonkeys, mitar, mizzao, mquandalle, prapicault, waitingkuo, wulfmeister.
v0.9.2.2, 2014-Sep-17
- Fix regression in 0.9.2 that prevented some users from accessing the Meteor development server in their browser. Specifically, 0.9.2 unintentionally changed the development mode server's default bind host to localhost instead of 0.0.0.0. #2596
v0.9.2.1, 2014-Sep-15
- Fix versions of packages that were published with
-cordovaversions in 0.9.2 (appcache, fastclick, htmljs, logging, mobile-status-bar, routepolicy, webapp-hashing).
v0.9.2, 2014-Sep-15
This release contains our first support for building mobile apps in Meteor, for both iOS and Android. This support comes via an integration with Apache's Cordova/PhoneGap project.
You can use Cordova/PhoneGap packages in your application or inside a Meteor package to access a device's native functions directly from JavaScript code.
The
meteor add-platformandmeteor runcommands now let you launch the app in the iOS or Android simulator or run it on an attached hardware device.This release extends hot code push to support live updates into installed native apps.
The
meteor bundlecommand has been renamed tometeor buildand now outputs build projects for the mobile version of the targeted app.See https://github.com/meteor/meteor/wiki/Meteor-Cordova-Phonegap-integration for more information about how to get started building mobile apps with Meteor.
Better mobile support for OAuth login: you can now use a redirect-based flow inside UIWebViews, and the existing popup-based flow has been adapted to work in Cordova/PhoneGap apps.
Bug fixes and minor improvements
Fix sorting on non-trivial keys in Minimongo. #2439
Bug fixes and performance improvements for the package system's constraint solver.
Improved error reporting for misbehaving oplog observe driver. #2033 #2244
Drop deprecated source map linking format used for older versions of Firefox. #2385
Allow Meteor tool to run from a symlink. #2462
Assets added via a plugin are no longer considered source files. #2488
Remove support for long deprecated
SERVER_IDenvironment variable. UseAUTOUPDATE_VERSIONinstead.Fix bug in reload-safetybelt package that resulted in reload loops in Chrome with cookies disabled.
Change the paths for static assets served from packages. The
:character is replaced with the_character in package names so as to allow serving on mobile devices and ease operation on Windows. For example, assets from theabc:bootstrappackage are now served at/packages/abc_bootstrapinstead of/packages/abc:bootstrap.Also change the paths within a bundled Meteor app to allow for different client architectures (eg mobile). For example,
bundle/programs/clientis nowbundle/programs/web.browser.
Patches by GitHub users awwx, mizzao, and mquandalle.
v0.9.1.1, 2014-Sep-06
Fix backwards compatibility for packages that had weak dependencies on packages renamed in 0.9.1 (
ui,deps,livedata). #2521Fix error when using the
reactive-dictpackage without themongopackage.
v0.9.1, 2014-Sep-04
Organizations in Meteor developer accounts
Meteor 0.9.1 ships with organizations support in Meteor developer accounts. Organizations are teams of users that make it easy to collaborate on apps and packages.
Create an organization at
https://www.meteor.com/account-settings/organizations. Run the meteor
authorized command in your terminal to give an organization
permissions to your apps. To add an organization as a maintainer of
your packages, use the meteor admin maintainers command. You can
also publish packages with an organization's name in the package name
prefix instead of your own username.
One backwards incompatible change for templates
- Templates can no longer be named "body" or "instance".
Backwards compatible Blaze API changes
New public and documented APIs:
Blaze.toHTMLWithData()Template.currentData()Blaze.getView()Template.parentData()(previouslyUI._parentData())Template.instance()(previouslyUI._templateInstance())Template.body(previouslyUI.body)new Template(previouslyTemplate.__create__)Blaze.getData()(previouslyUI.getElementData, orBlaze.getCurrentDatawith no arguments)Deprecate the
uipackage. Instead, use theblazepackage. TheUIandBlazesymbols are now the same.Deprecate
UI.insert.UI.renderandUI.renderWithDatanow render a template and place it in the DOM.Add an underscore to some undocumented Blaze APIs to make them internal. Notably:
Blaze._materializeView,Blaze._createView,Blaze._toText,Blaze._destroyView,Blaze._destroyNode,Blaze._withCurrentView,Blaze._DOMBackend,Blaze._TemplateWithDocument Views. Views are the machinery powering DOM updates in Blaze.
Expose
viewproperty on template instances.
Backwards compatible renames
- Package renames
livedata->ddpmongo-livedata->mongostandard-app-packages->meteor-platform- Symbol renames
Meteor.Collection->Mongo.CollectionMeteor.Collection.Cursor->Mongo.CursorMeteor.Collection.ObjectID->Mongo.ObjectIDDeps->Tracker
Other
Add
reactive-varpackage. Lets you define a single reactive variable, like a single key inSession.Don't throw an exception in Chrome when cookies and local storage are blocked.
Bump DDP version to "1". Clients connecting with version "pre1" or "pre2" should still work.
Allow query parameters in OAuth1 URLs. #2404
Fix
meteor listif not all packages on server. Fixes #2468
Patch by GitHub user mitar.
v0.9.0.1, 2014-Aug-27
Fix issues preventing hot code reload from automatically reloading webapps in two cases: when the old app was a pre-0.9.0 app, and when the app used appcache. (In both cases, an explicit reload still worked.)
Fix publishing packages containing a plugin with platform-specific code but no platform-specific code in the main package.
Fix
meteor add package@versionwhen the package was already added with a different version constraint.Improve treatment of pre-release packages (packages with a dash in their version). Guarantee that they will not be chosen by the constraint solver unless explicitly requested.
meteor listwon't suggest that you update to them.Fix slow spiderable executions.
Fix dev-mode client-only restart when client files changed very soon after server restart.
Fix stack trace on
meteor addconstraint solver failure.Fix "access-denied" stack trace when publishing packages.
v0.9.0, 2014-Aug-26
Meteor 0.9.0 introduces the Meteor Package Server. Incorporating lessons from
our community's Meteorite tool, Meteor 0.9.0 allows users to develop and publish
Meteor packages to a central repository. The meteor publish command is used to
publish packages. Non-core packages can now be added with meteor add, and you
can specify version constraints on the packages you use. Binary packages can be
published for additional architectures with meteor publish-for-arch, which
allows cross-platform deploys and bundling. You can search for packages with
meteor search and display information on them with meteor show, or you can
use the Atmosphere web interface developed by Percolate Studio at
https://atmospherejs.com/
See https://docs.meteor.com/#writingpackages and https://docs.meteor.com/#packagejs for more details.
Other packaging-related changes:
meteor listnow lists the packages your app is using, which was formerly the behavior ofmeteor list --using. To search for packages you are not currently using, usemeteor search. The concept of an "internal" package (which did not show up inmeteor list) no longer exists.To prepare a bundle created with
meteor bundlefor execution on a server, you now runnpm installwith no arguments instead of having to specify a few specific npm modules and their versions explicitly. See the README in the generated bundle for more details.All
under_score-stylepackage.jsAPIs (Package.on_use,api.add_files, etc) have been replaced withcamelCasenames (Package.onUse,api.addFiles, etc). The old names continue to work for now.There's a new
archMatchingoption toPlugin.registerSourceHandler, which should be used by any plugin whose output is only for the client or only for the server (eg, CSS and HTML templating packages); this allows Meteor to avoid restarting the server when files processed by these plugins change.
Other changes:
When running your app with the local development server, changes that only affect the client no longer require restarting the server. Changes that only affect CSS no longer require the browser to refresh the page, both in local development and in some production environments. #490
When a call to
matchfails in a method or subscription, log the failure on the server. (This matches the behavior described in our docs)The
appcachepackage now defaults to functioning on all browsers that support the AppCache API, rather than a whitelist of browsers. The main effect of this change is thatappcacheis now enabled by default on Firefox, because Firefox no longer makes a confusing popup. You can still disable individual browsers withAppCache.config. #2241The
forceApprovalPromptoption can now be specified inAccounts.ui.configin addition toMeteor.loginWithGoogle. #2149Don't leak websocket clients in server-to-server DDP in some cases (and fix "Got open from inactive client" error). https://github.com/faye/websocket-driver-node/pull/8
Updated OAuth url for login with Meetup.
Allow minimongo
changedcallbacks to mutate theiroldDocumentargument. #2231Fix upsert called from client with no callback. #2413
Avoid a few harmless exceptions in OplogObserveDriver.
Refactor
observe-sequencepackage.Fix
spiderablerace condition.Re-apply our fix of NPM bug https://github.com/npm/npm/issues/3265 which got accidentally reverted upstream.
Workaround for a crash in recent Safari versions. https://github.com/meteor/meteor/commit/e897539adb
Upgraded dependencies:
less: 1.7.4 (from 1.7.1)
tar: 1.0.1 (from 0.1.19)
fstream: 1.0.2 (from 0.1.25)
Patches by GitHub users Cangit, dandv, ImtiazMajeed, MaximDubrovin, mitar, mquandalle, rcy, RichardLitt, thatneat, and twhy.
v0.8.3.1, 2014-Dec-09 (backport)
- 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.8.3, 2014-Jul-29
Blaze
Refactor Blaze to simplify internals while preserving the public API.
UI.Componenthas been replaced withBlaze.View.Fix performance issues and memory leaks concerning event handlers.
Add
UI.remove, which removes a template afterUI.render/UI.insert.Add
this.autorunto the template instance, which is likeDeps.autorunbut is automatically stopped when the template is destroyed.Create
<a>tags as SVG elements when they havexlink:hrefattributes. (Previously,<a>tags inside SVGs were never created as SVG elements.) #2178Throw an error in
{{foo bar}}iffoois missing or not a function.Cursors returned from template helpers for #each should implement the
observeChangesmethod and don't have to be Minimongo cursors (allowing new custom data stores for Blaze like Miniredis).Remove warnings when {{#each}} iterates over a list of strings, numbers, or other items that contains duplicates. #1980
Meteor Accounts
Fix regression in 0.8.2 where an exception would be thrown if
Meteor.loginWithPassworddidn't have a callback. Callbacks toMeteor.loginWithPasswordare now optional again. #2255Fix OAuth popup flow in mobile apps that don't support
window.opener. #2302Fix "Email already exists" error with MongoDB 2.6. #2238
mongo-livedata and minimongo
Fix performance issue where a large batch of oplog updates could block the node event loop for long periods. #2299.
Fix oplog bug resulting in error message "Buffer inexplicably empty". #2274
Fix regression from 0.8.2 that caused collections to appear empty in reactive
findOne()orfetchqueries that run before a mutator returns. #2275
Miscellaneous
Stop including code by default that automatically refreshes the page if JavaScript and CSS don't load correctly. While this code is useful in some multi-server deployments, it can cause infinite refresh loops if there are errors on the page. Add the
reload-safetybeltpackage to your app if you want to include this code.On the server,
Meteor.startup(c)now callscimmediately if the server has already started up, matching the client behavior. #2239Add support for server-side source maps when debugging with
node-inspector.Add
WebAppInternals.addStaticJs()for adding static JavaScript code to be served in the app, inline if allowed bybrowser-policy.Make the
tinytest/runmethod return immediately, so thatwaitmethod calls from client tests don't block on server tests completing.Log errors from method invocations on the client if there is no callback provided.
Upgraded dependencies:
node: 0.10.29 (from 0.10.28)
less: 1.7.1 (from 1.6.1)
Patches contributed by GitHub users Cangit, cmather, duckspeaker, zol.
v0.8.2, 2014-Jun-23
Meteor Accounts
Switch
accounts-passwordto use bcrypt to store passwords on the server. (Previous versions of Meteor used a protocol called SRP.) Users will be transparently transitioned when they log in. This transition is one-way, so you cannot downgrade a production app once you upgrade to 0.8.2. If you are maintaining an authenticating DDP client:- Clients that use the plaintext password login handler (i.e. call
the
loginmethod with argument{ password: <plaintext password> }) will continue to work, but users will not be transitioned from SRP to bcrypt when logging in with this login handler. - Clients that use SRP will no longer work. These clients should
instead directly call the
loginmethod, as inMeteor.loginWithPassword. The argument to theloginmethod can be either:{ password: <plaintext password> }, or{ password: { digest: <password hash>, algorithm: "sha-256" } }, where the password hash is the hex-encoded SHA256 hash of the plaintext password.
- Clients that use the plaintext password login handler (i.e. call
the
Show the display name of the currently logged-in user after following an email verification link or a password reset link in
accounts-ui.Add a
userEmailoption toMeteor.loginWithMeteorDeveloperAccountto pre-fill the user's email address in the OAuth popup.Ensure that the user object has updated token information before it is passed to email template functions. #2210
Export the function that serves the HTTP response at the end of an OAuth flow as
OAuth._endOfLoginResponse. This function can be overridden to make the OAuth popup flow work in certain mobile environments wherewindow.openeris not supported.Remove support for OAuth redirect URLs with a
redirectquery parameter. This OAuth flow was never documented and never fully worked.
Blaze
Blaze now tracks individual CSS rules in
styleattributes and won't overwrite changes to them made by other JavaScript libraries.Add
{{> UI.dynamic}}to make it easier to dynamically render a template with a data context.Add
UI._templateInstance()for accessing the current template instance from within a block helper.Add
UI._parentData(n)for accessing parent data contexts from within a block helper.Add preliminary API for registering hooks to run when Blaze intends to insert, move, or remove DOM elements. For example, you can use these hooks to animate nodes as they are inserted, moved, or removed. To use them, you can set the
_uihooksproperty on a container DOM element._uihooksis an object that can have any subset of the following three properties:insertElement: function (node, next): called when Blaze intends to insert the DOM elementnodebefore the elementnextmoveElement: function (node, next): called when Blaze intends to move the DOM elementnodebefore the elementnextremoveElement: function (node): called when Blaze intends to remove the DOM elementnode
Note that when you set one of these functions on a container element, Blaze will not do the actual operation; it's your responsibility to actually insert, move, or remove the node (by calling
$(node).remove(), for example).The
findAllmethod on template instances now returns a vanilla array, not a jQuery object. The$method continues to return a jQuery object. #2039Fix a Blaze memory leak by cleaning up event handlers when a template instance is destroyed. #1997
Fix a bug where helpers used by {{#with}} were still re-running when their reactive data sources changed after they had been removed from the DOM.
Stop not updating form controls if they're focused. If a field is edited by one user while another user is focused on it, it will just lose its value but maintain its focus. #1965
Add
_nestInCurrentComputationoption toUI.render, fixing a bug in {{#each}} when an item is added inside a computation that subsequently gets invalidated. #2156Fix bug where "=" was not allowed in helper arguments. #2157
Fix bug when a template tag immediately follows a Spacebars block comment. #2175
Command-line tool
Add --directory flag to
meteor bundle. Setting this flag outputs a directory rather than a tarball.Speed up updates of NPM modules by upgrading Node to include our fix for https://github.com/npm/npm/issues/3265 instead of passing
--forcetonpm install.Always rebuild on changes to npm-shrinkwrap.json files. #1648
Fix uninformative error message when deploying to long hostnames. #1208
Increase a buffer size to avoid failing when running MongoDB due to a large number of processes running on the machine, and fix the error message when the failure does occur. #2158
Clarify a
meteor mongoerror message when using the MONGO_URL environment variable. #1256
Testing
- Run server tests from multiple clients serially instead of in parallel. This allows testing features that modify global server state. #2088
Security
Add Content-Type headers on JavaScript and CSS resources.
Add
X-Content-Type-Options: nosniffheader tobrowser-policy-content's default policy. If you are usingbrowser-policy-contentand you don't want your app to send this header, then callBrowserPolicy.content.allowContentTypeSniffing().Use
Meteor.absoluteUrl()to compute the redirect URL in theforce-sslpackage (instead of the host header).
Miscellaneous
Allow
checkto work on the server outside of a Fiber. #2136EJSON custom type conversion functions should not be permitted to yield. #2136
The legacy polling observe driver handles errors communicating with MongoDB better and no longer gets "stuck" in some circumstances.
Automatically rewind cursors before calls to
fetch,forEach, ormap. On the client, don't cache the return value ofcursor.count()(consistently with the server behavior).cursor.rewind()is now a no-op. #2114Remove an obsolete hack in reporting line numbers for LESS errors. #2216
Avoid exceptions when accessing localStorage in certain Internet Explorer configurations. #1291, #1688.
Make
handle.ready()reactively stop, wherehandleis a subscription handle.Fix an error message from
audit-argument-checksafter login.Make the DDP server send an error if the client sends a connect message with a missing or malformed
supportfield. #2125Fix missing
jquerydependency in theamplifypackage. #2113Ban inserting EJSON custom types as documents. #2095
Fix incorrect URL rewrites in stylesheets. #2106
Upgraded dependencies:
node: 0.10.28 (from 0.10.26)
uglify-js: 2.4.13 (from 2.4.7)
sockjs server: 0.3.9 (from 0.3.8)
websocket-driver: 0.3.4 (from 0.3.2)
stylus: 0.46.3 (from 0.42.3)
Patches contributed by GitHub users awwx, babenzele, Cangit, dandv, ducdigital, emgee3, felixrabe, FredericoC, jbruni, kentonv, mizzao, mquandalle, subhog, tbjers, tmeasday.
v0.8.1.3, 2014-May-22
Fix a security issue in the
spiderablepackage.spiderablenow uses the ROOT_URL environment variable instead of the Host header to determine which page to snapshot.Fix hardcoded Twitter URL in
oauth1package. This fixes a regression in 0.8.0.1 that broke Atmosphere packages that do OAuth1 logins. #2154.Add
credentialSecretargument toGoogle.retrieveCredential, which was forgotten in a previous release.Remove nonexistent
-aand-raliases for--addand--removeinmeteor help authorized. #2155Add missing
underscoredependency in theoauth-encryptionpackage. #2165Work around IE8 bug that caused some apps to fail to render when minified. #2037.
v0.8.1.2, 2014-May-12
Fix memory leak (introduced in 0.8.1) by making sure to unregister sessions at the server when they are closed due to heartbeat timeout.
Add
credentialSecretargument toGoogle.retrieveCredential,Facebook.retrieveCredential, etc., which is needed to use them as of 0.8.1. #2118Fix 0.8.1 regression that broke apps using a
ROOT_URLwith a path prefix. #2109
v0.8.1.1, 2014-May-01
Fix 0.8.1 regression preventing clients from specifying
_idon insert. #2097Fix handling of malformed URLs when merging CSS files. #2103, #2093
Loosen the checks on the
optionsargument toCollection.findto allow undefined values.
v0.8.1, 2014-Apr-30
Meteor Accounts
Fix a security flaw in OAuth1 and OAuth2 implementations. If you are using any OAuth accounts packages (such as
accounts-googleoraccounts-twitter), we recommend that you update immediately and log out your users' current sessions with the following MongoDB command:$ db.users.update({}, { $set: { 'services.resume.loginTokens': [] } }, { multi: true });
OAuth redirect URLs are now required to be on the same origin as your app.
Log out a user's other sessions when they change their password.
Store pending OAuth login results in the database instead of in-memory, so that an OAuth flow succeeds even if different requests go to different server processes.
When validateLoginAttempt callbacks return false, don't override a more specific error message.
Add
Random.secret()for generating security-critical secrets like login tokens.Meteor.logoutOtherClientsnow calls the user callback when other login tokens have actually been removed from the database, not when they have been marked for eventual removal. #1915Rename
OauthtoOAuth.Oauthis now an alias for backwards compatibility.Add
oauth-encryptionpackage for encrypting sensitive account credentials in the database.A validate login hook can now override the exception thrown from
beginPasswordExchangelike it can for other login methods.Remove an expensive observe over all users in the
accounts-basepackage.
Blaze
Disallow
javascript:URLs in URL attribute values by default, to help prevent cross-site scripting bugs. CallUI._allowJavascriptUrls()to allow them.Fix
UI.toHTMLon templates containing{{#with}}.Fix
{{#with}}over a data context that is mutated. #2046Clean up autoruns when calling
UI.toHTML.Properly clean up event listeners when removing templates.
Add support for
{{!-- block comments --}}in Spacebars. Block comments may contain}}, so they are more useful than{{! normal comments}}for commenting out sections of Spacebars templates.Don't dynamically insert
<tbody>tags in reactive tablesWhen handling a custom jQuery event, additional arguments are no longer lost -- they now come after the template instance argument. #1988
DDP and MongoDB
Extend latency compensation to support an arbitrary sequence of inserts in methods. Previously, documents created inside a method stub on the client would eventually be replaced by new documents from the server, causing the screen to flicker. Calling
insertinside a method body now generates the same ID on the client (inside the method stub) and on the server. A sequence of inserts also generates the same sequence of IDs. Code that wants a random stream that is consistent between method stub and real method execution can get one withDDP.randomStream. https://trello.com/c/moiiS2rP/57-pattern-for-creating-multiple-database-records-from-a-methodThe document passed to the
insertcallback ofallowanddenynow only has a_idfield if the client explicitly specified one; this allows you to useallow/denyrules to prevent clients from specifying their own_id. As an exception,allow/denyrules with atransformalways have an_id.DDP now has an implementation of bidirectional heartbeats which is consistent across SockJS and websocket transports. This enables connection keepalive and allows servers and clients to more consistently and efficiently detect disconnection.
The DDP protocol version number has been incremented to "pre2" (adding randomSeed and heartbeats).
The oplog observe driver handles errors communicating with MongoDB better and knows to re-poll all queries after a MongoDB failover.
Fix bugs involving mutating DDP method arguments.
meteor command-line tool
Move boilerplate HTML from tools to webapp. Change internal
Webapp.addHtmlAttributeHookAPI.Add
meteor list-sitescommand for listing the sites that you have deployed to meteor.com with your Meteor developer account.Third-party template languages can request that their generated source loads before other JavaScript files, just like *.html files, by passing the isTemplate option to Plugin.registerSourceHandler.
You can specify a particular interface for the dev mode runner to bind to with
meteor -p host:port.Don't include proprietary tar tags in bundle tarballs.
Convert relative URLs to absolute URLs when merging CSS files.
Upgraded dependencies
- Node.js from 0.10.25 to 0.10.26.
- MongoDB driver from 1.3.19 to 1.4.1
- stylus: 0.42.3 (from 0.42.2)
- showdown: 0.3.1
- css-parse: an unreleased version (from 1.7.0)
- css-stringify: an unreleased version (from 1.4.1)
Patches contributed by GitHub users aldeed, apendua, arbesfeld, awwx, dandv, davegonzalez, emgee3, justinsb, mquandalle, Neftedollar, Pent, sdarnell, and timhaines.
v0.8.0.1, 2014-Apr-21
- Fix security flaw in OAuth1 implementation. Clients can no longer choose the callback_url for OAuth1 logins.
v0.8.0, 2014-Mar-27
Meteor 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}}, andpreservedirectives - 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.renderedcallback 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-uilogin 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.foois 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.renderandSpark.renderhave been removed. UseUI.renderandUI.insertinstead.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
tapevent, 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
madewithpackage (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, anddomutilspackages have been removed.The
Handlebarsnamespace has been deprecated.Handlebars.SafeStringis nowSpacebars.SafeString, andHandlebars.registerHelperis nowUI.registerHelper.
Patches contributed by GitHub users cmather and mart-jansink.
v0.7.2.3, 2014-Dec-09 (backport)
- 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, 2014-Apr-21 (backport)
- 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, 2014-Apr-30 (backport)
- 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.2, 2014-Mar-18
Support oplog tailing on queries with the
limitoption. All queries except those containing$nearor$whereselectors or theskipoption 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 #1815Change the
Accounts.registerLoginHandlerAPI 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.registerServicepackages are not affected.Add support for HTML email in
Accounts.emailTemplates. #1785minimongo: Support
{a: {$elemMatch: {x: 1, $or: [{a: 1}, {b: 1}]}}}#1875minimongo: 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
profileandemailscopes instead of deprecated URL-based scopes. #1887Add
_throwFirstErroroption toDeps.flush.Make
factspackage data available on the server asFacts._factsByPackage.Fix issue where
LESScompilation error could crash themeteor runprocess. #1877Fix crash caused by empty HTTP host header in
meteor rundevelopment server. #1871Fix hot code reload in private browsing mode in Safari.
Fix appcache size calculation to avoid erronious warnings. #1847
Remove unused
Deps._makeNonReactivewrapper function. CallDeps.nonreactivedirectly instead.Avoid setting the
oplogReplayon non-oplog collections. Doing so caused mongod to crash.Add startup message to
test-in-consoleto ease automation. #1884Upgraded dependencies
amplify: 1.1.2 (from 1.1.0)
Patches contributed by GitHub users awwx, dandv, queso, rgould, timhaines, zol
v0.7.1.2, 2014-Feb-27
Fix bug in tool error handling that caused
meteorto 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, 2014-Feb-24
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 loginandmeteor 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-developerpackage 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
$whereand$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
objname in$where.$regexmatches actual regexps properly.Improve support for
$nin,$ne,$not.Support using
{ $in: [/foo/, /bar/] }. #1707Support
{$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
$nearwith 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}}. #1794Upgraded 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
@importstatements correctly.Lint CSS files for invalid
@directives.Change the recommended suffix for imported LESS files from
.lessimportto.import.less. Add.import.stylto allowstylusimports..lessimportcontinues to work but is deprecated.Add
clientAddressandhttpHeaderstothis.connectionin 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 --helpfor 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
lengthwith 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 numericlengthfields as arrays. #594 #1737Deprecate
Accounts.loginServiceConfigurationin favor ofServiceConfiguration.configurations, exported by theservice-configurationpackage.Accounts.loginServiceConfigurationis maintained for backwards-compatibility, but it is defined in aMeteor.startupblock and so cannot be used from top-level code.Cursors with a field specifier containing
{_id: 0}can no longer be used withobserveChangesorobserve. 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
_idfield, though they may leave it out.Remove broken IE7 support from the
localstoragepackage. Meteor accounts logins no longer persist in IE7.Fix the
localstoragepackage when used with Safari in private browsing mode. This fixes a problem with login token storage and account login. #1291Types added with
EJSON.addTypenow have defaultcloneandequalsimplementations. Users may still specifycloneorequalsfunctions to override the default behavior. #1745Add
frame-srctobrowser-policy-contentand account for cross-browser CSP disparities.Deprecate
Oauth.initiateLoginin favor ofOauth.showPopup.Add
WebApp.rawConnectHandlersfor 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.connectionto 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
retrypackage for connection retry with exponential backoff.Pass
updateandremovereturn values correctly when using collections validated withallowanddenyrules. #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: trueoption. #1668Fix races when calling login and/or logoutOtherClients from multiple tabs. #1616
Include oauth_verifier as a header rather than a parameter in the
oauth1package. #1825Fix
force-sslto allow local development withmeteor runin 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
addedandchangedmethods 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
execto 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.1, 2013-Dec-20
Two fixes to
meteor runMongo startup bugs that could lead to hangs with the message "Initializing mongo database... this may take a moment.". #1696Apply the Node patch to 0.10.24 as well (see the 0.7.0 section for details).
Fix gratuitous IE7 incompatibility. #1690
v0.7.0, 2013-Dec-17
This 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_URLenvironment variable. Currently the only supported selectors are equality checks;$-operators,limitandskipqueries fall back to the original poll-and-diff algorithm. See https://github.com/meteor/meteor/wiki/Oplog-Observe-Driver for details.Add
Meteor.onConnectionand addthis.connectionto 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. #1515Fix error when publish function callbacks are called during session shutdown.
Rework hot code push. The new
autoupdatepackage 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
factspackage 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$sliceoptions for minimongo's$pushmodifier. #1492Introduce
--raw-logsoption tometeor runto 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
fieldsoption in minimongo when only_idis present. #1651Fix issue where setting
process.env.MAIL_URLin app code would not alter where mail was sent. This was a regression in 0.6.6 from 0.6.5. #1649Use 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 runwith settings files containing non-ASCII characters. #1497Support
EJSON.cloneforMeteor.Error. As a result, they are properly stringified in DDP even if thrown through aFuture. #1482Fix passing
transform: nulloption tocollection.allow()to disable transformation in validators. #1659Fix livedata error on
this.removedduring session shutdown. #1540 #1553Fix 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
appcachesize 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.6.6.3, 2013-Nov-04
Fix error when publish function callbacks are called during session shutdown. #1540 #1553
Improve
meteor runCPU usage in projects with many directories. #1506
v0.6.6.2, 2013-Oct-21
- Upgrade Node from 0.10.20 to 0.10.21 (security update).
v0.6.6.1, 2013-Oct-12
v0.6.6, 2013-Oct-10
Security
Add
browser-policypackage for configuring and sending Content-Security-Policy and X-Frame-Options HTTP headers. See the docs for more.Use cryptographically strong pseudorandom number generators when available.
MongoDB
Add upsert support.
Collection.updatenow supports the{upsert: true}option. Additionally, add aCollection.upsertmethod which returns the newly inserted object id if applicable.updateandremovenow return the number of documents affected. #1046$nearoperator for2dand2dsphereindices.The
fieldsoption to the collection methodsfindandfindOnenow works on the client as well. (Operators such as$elemMatchand$are not yet supported infieldsprojections.) #1287Pass an index and the cursor itself to the callbacks in
cursor.forEachandcursor.map, just like the correspondingArraymethods. #63Support
c.find(query, {limit: N}).count()on the client. #654Improve behavior of
$ne,$nin, and$notselectors with objects containing arrays. #1451Fix various bugs if you had two documents with the same _id field in String and ObjectID form.
Accounts
[Behavior Change] Expire login tokens periodically. Defaults to 90 days. Use
Accounts.config({loginExpirationInDays: null})to disable token expiration.[Behavior Change] Write dates generated by Meteor Accounts to Mongo as Date instead of number; existing data can be converted by passing it through
new Date(). #1228Log out and close connections for users if they are deleted from the database.
Add Meteor.logoutOtherClients() for logging out other connections logged in as the current user.
restrictCreationByEmailDomainoption inAccounts.configto restrict new users to emails of specific domain (eg. only users with @meteor.com emails) or a custom validator. #1332Support OAuth1 services that require request token secrets as well as authentication token secrets. #1253
Warn if
Accounts.configis only called on the client. #828Fix bug where callbacks to login functions could be called multiple times when the client reconnects.
DDP
Fix infinite loop if a client disconnects while a long yielding method is running.
Unfinished code to support DDP session resumption has been removed. Meteor servers now stop processing messages from clients and reclaim memory associated with them as soon as they are disconnected instead of a few minutes later.
Tools
The pre-0.6.5
Package.register_extensionAPI has been removed. UsePackage._transitional_registerBuildPlugininstead, which was introduced in 0.6.5. (A bug prevented the 0.6.5 reimplementation ofregister_extensionfrom working properly anyway.)Support using an HTTP proxy in the
meteorcommand line tool. This allows theupdate,deploy,logs, andmongocommands to work behind a proxy. Use the standardhttp_proxyenvironment variable to specify your proxy endpoint. #429, #689, #1338Build Linux binaries on an older Linux machine. Meteor now supports running on Linux machines with glibc 2.9 or newer (Ubuntu 10.04+, RHEL and CentOS 6+, Fedora 10+, Debian 6+). Improve error message when running on Linux with unsupported glibc, and include Mongo stderr if it fails to start.
Install NPM modules with
--forceto avoid corrupted local caches.Rebuild NPM modules in packages when upgrading to a version of Meteor that uses a different version of Node.
Disable the Mongo http interface. This lets you run meteor on two ports differing by 1000 at the same time.
Misc
[Known issue] Breaks support for pre-release OSX 10.9 'Mavericks'. Will be addressed shortly. See issues: https://github.com/joyent/node/issues/6251 https://github.com/joyent/node/issues/6296
EJSON.stringifynow takes options:canonicalcauses objects keys to be stringified in sorted orderindentallows formatting control over the EJSON stringificationEJSON now supports
Infinity,-InfinityandNaN.Check that the argument to
EJSON.parseis a string. #1401Better error from functions that use
Meteor._wrapAsync(eg collection write methods andHTTPmethods) and in DDP server message processing. #1387Support
appcacheon Chrome for iOS.Support literate CoffeeScript files with the extension
.coffee.md(in addition to the already-supported.litcoffeeextension). #1407Make
madewithpackage work again (broken in 0.6.5). #1448Better error when passing a string to
{{#each}}. #722Add support for JSESSIONID cookies for sticky sessions. Set the
USE_JSESSIONIDenvironment variable to enable placing a JSESSIONID cookie on sockjs requests.Simplify the static analysis used to detect package-scope variables.
Upgraded dependencies:
Node from 0.8.24 to 0.10.20
MongoDB from 2.4.4 to 2.4.6
MongoDB driver from 1.3.17 to 1.3.19
http-proxy from 0.10.1 to a pre-release of 1.0.0
stylus from 0.30.1 to 0.37.0
nib from 0.8.2 to 1.0.0
optimist from 0.3.5 to 0.6.0
semver from 1.1.0 to 2.1.0
request from 2.12.0 to 2.27.0
keypress from 0.1.0 to 0.2.1
underscore from 1.5.1 to 1.5.2
fstream from 0.1.21 to 0.1.24
tar from 0.1.14 to 0.1.18
source-map from 0.1.26 to 0.1.30
source-map-support from a fork of 0.1.8 to 0.2.3
escope from a fork of 0.0.15 to 1.0.0
estraverse from 1.1.2-1 to 1.3.1
simplesmtp from 0.1.25 to 0.3.10
stream-buffers from 0.2.3 to 0.2.5
websocket from 1.0.7 to 1.0.8
cli-color from 0.2.2 to 0.2.3
clean-css from 1.0.11 to 1.1.2
UglifyJS2 from a fork of 2.3.6 to a different fork of 2.4.0
connect from 2.7.10 to 2.9.0
send from 0.1.0 to 0.1.4
useragent from 2.0.1 to 2.0.7
replaced byline with eachline 2.3.3
Patches contributed by GitHub users ansman, awwx, codeinthehole, jacott, Maxhodges, meawoppl, mitar, mizzao, mquandalle, nathan-muir, RobertLowe, ryw, sdarnell, and timhaines.
v0.6.5.3, 2014-Dec-09 (backport)
- 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.6.5.2, 2013-Oct-21
- Upgrade Node from 0.8.24 to 0.8.26 (security patch)
v0.6.5.1, 2013-Aug-28
Fix syntax errors on lines that end with a backslash. #1326
Fix serving static files with special characters in their name. #1339
Upgrade
esprimaJavaScript parser to fix bug parsing complex regexps.Export
Spiderablefromspiderablepackage to allow users to setSpiderable.userAgentRegExpsto control what user agents are treated as spiders.Add EJSON to standard-app-packages. #1343
Fix bug in d3 tab character parsing.
Fix regression when using Mongo ObjectIDs in Spark templates.
v0.6.5, 2013-Aug-14
New package system with package compiler and linker:
Each package now has it own namespace for variable declarations. Global variables used in a package are limited to package scope.
Packages must explicitly declare which symbols they export with
api.exportinpackage.js.Apps and packages only see the exported symbols from packages they explicitly use. For example, if your app uses package A which in turn depends on package B, only package A's symbols will be available in the app.
Package names can only contain alphanumeric characters, dashes, and dots. Packages with spaces and underscores must be renamed.
Remove hardcoded list of required packages. New default
standard-app-packagespackage adds dependencies on the core Meteor stack. This package can be removed to make an app with only parts of the Meteor stack.standard-app-packageswill be automatically added to a project when it is updated to Meteor 0.6.5.Custom app packages in the
packagesdirectory are no longer automatically used. They must be explicitly added to the app withmeteor add <packagename>. To help with the transition, all packages in thepackagesdirectory will be automatically added to the project when it is updated to Meteor 0.6.5.New "unipackage" on-disk format for built packages. Compiled packages are cached and rebuilt only when their source or dependencies change.
Add "unordered" and "weak" package dependency modes to allow circular package dependencies and conditional code inclusion.
New API (
_transitional_registerBuildPlugin) for declaring compilers, preprocessors, and file extension handlers. These new build plugins are full compilation targets in their own right, and have their own namespace, source files, NPM requirements, and package dependencies. The oldregister_extensionAPI is deprecated. Please note that thepackage.jsformat and especially_transitional_registerBuildPluginare not frozen interfaces and are subject to change in future releases.Add
api.imply, which allows one package to "imply" another. If package A implies package B, then anything that depends on package A automatically depends on package B as well (and receives package B's imports). This is useful for creating umbrella packages (standard-app-packages) or sometimes for factoring common code out of related packages (accounts-base).Move HTTP serving out of the server bootstrap and into the
webapppackage. This allows building Meteor apps that are not web servers (eg. command line tools, DDP clients, etc.). Connect middlewares can now be registered on the newWebApp.connectHandlersinstead of the old__meteor_bootstrap__.app.The entire Meteor build process now has first-class source map support. A source map is maintained for every source file as it passes through the build pipeline. Currently, the source maps are only served in development mode. Not all web browsers support source maps yet and for those that do, you may have to turn on an option to enable them. Source maps will always be used when reporting exceptions on the server.
Update the
coffeescriptpackage to generate source maps.Add new
AssetsAPI andprivatesubdirectory for including and accessing static assets on the server. http://docs.meteor.com/#assetsAdd
Meteor.disconnect. Call this to disconnect from the server and stop all live data updates. #1151Add
Match.Integertocheckfor 32-bit signed integers.Meteor.connecthas been renamed toDDP.connectand is now fully supported on the server. Server-to-server DDP connections use websockets, and can be used for both method calls and subscriptions.Rename
Meteor.default_connectiontoMeteor.connectionandMeteor.default_servertoMeteor.server.Rename
Meteor.httptoHTTP.ROOT_URLmay now have a path part. This allows serving multiple Meteor apps on the same domain.Support creating named unmanaged collections with
new Meteor.Collection("name", {connection: null}).New
Logfunction in theloggingpackage which prints with timestamps, color, filenames and linenumbers.Include http response in errors from oauth providers. #1246
The
observecallbackmovedTonow has a fourth argumentbefore.Move NPM control files for packages from
.npmto.npm/package. This is to allow build plugins such ascoffeescriptto depend on NPM packages. Also, when removing the last NPM dependency, clean up the.npmdir.Remove deprecated
Meteor.is_clientandMeteor.is_servervariables.Implement "meteor bundle --debug" #748
Add
forceApprovalPromptoption toMeteor.loginWithGoogle. #1226Make server-side Mongo
inserts,updates, andremoves run asynchronously when a callback is passed.Improve memory usage when calling
findOne()on the server.Delete login tokens from server when user logs out.
Rename package compatibility mode option to
add_filesfromrawtobare.Fix Mongo selectors of the form: {$regex: /foo/}.
Fix Spark memory leak. #1157
Fix EPIPEs during dev mode hot code reload.
Fix bug where we would never quiesce if we tried to revive subs that errored out (5e7138d)
Fix bug where
this.fieldnamein handlebars template might refer to a helper instead of a property of the current data context. #1143Fix submit events on IE8. #1191
Handle
Meteor.loginWithXbeing called with a callback but no options. #1181Work around a Chrome bug where hitting reload could cause a tab to lose the DDP connection and never recover. #1244
Upgraded dependencies:
Node from 0.8.18 to 0.8.24
MongoDB from 2.4.3 to 2.4.4, now with SSL support
CleanCSS from 0.8.3 to 1.0.11
Underscore from 1.4.4 to 1.5.1
Fibers from 1.0.0 to 1.0.1
MongoDB Driver from 1.3.7 to 1.3.17
Patches contributed by GitHub users btipling, mizzao, timhaines and zol.
v0.6.4.1, 2013-Jul-19
- Update mongodb driver to use version 0.2.1 of the bson module.
v0.6.4, 2013-Jun-10
Separate OAuth flow logic from Accounts into separate packages. The
facebook,github,google,meetup,twitter, andweibopackages can be used to perform an OAuth exchange without creating an account and logging in. #1024If you set the
DISABLE_WEBSOCKETSenvironment variable, browsers will not attempt to connect to your app using Websockets. Use this if you know your server environment does not properly proxy Websockets to reduce connection startup time.Make
Meteor.deferwork in an inactive tab in iOS. #1023Allow new
Randominstances to be constructed with specified seed. This can be used to create repeatable test cases for code that picks random values. #1033Fix CoffeeScript error reporting to include source file and line number again. #1052
Fix Mongo queries which nested JavaScript RegExp objects inside
$or. #1089Upgraded dependencies:
Underscore from 1.4.2 to 1.4.4 #776
http-proxy from 0.8.5 to 0.10.1 #513
connect from 1.9.2 to 2.7.10
Node mongodb client from 1.2.13 to 1.3.7 #1060
Patches contributed by GitHub users awwx, johnston, and timhaines.
v0.6.3, 2013-May-15
Add new
checkpackage for ensuring that a value matches a required type and structure. This is used to validate untrusted input from the client. See http://docs.meteor.com/#match for details.Use Websockets by default on supported browsers. This reduces latency and eliminates the constant network spinner on iOS devices.
With
autopublishon, publish many useful fields onMeteor.users.Files in the
client/compatibility/subdirectory of a Meteor app do not get wrapped in a new variable scope. This is useful for third-party libraries which expectvarstatements at the outermost level to be global.Add synthetic
tapevent for use on touch enabled devices. This is a replacement forclickthat fires immediately.When using the
httppackage synchronously on the server, errors are thrown rather than passed inresult.errorThe
manageroption to theMeteor.Collectionconstructor is now calledconnection. The old name still works for now. #987The
localstorage-polyfillsmart package has been replaced by alocalstoragepackage, which defines aMeteor._localStorageAPI instead of trying to replace the DOMwindow.localStoragefacility. (Now, apps can use the existence ofwindow.localStorageto detect if the full localStorage API is supported.) #979Upgrade MongoDB from 2.2.1 to 2.4.3.
Upgrade CoffeeScript from 1.5.0 to 1.6.2. #972
Faster reconnects when regaining connectivity. #696
Email.sendhas a newheadersoption to set arbitrary headers. #963Cursor transform functions on the server no longer are required to return objects with correct
_idfields. #974Rework
observe()callback ordering in minimongo to improve fiber safety on the server. This makes subscriptions on server to server DDP more usable.Use binary search in minimongo when updating ordered queries. #969
Fix EJSON base64 decoding bug. #1001
Support
appcacheon Chromium. #958
Patches contributed by GitHub users awwx, jagill, spang, and timhaines.
v0.6.2.1, 2013-Apr-24
- When authenticating with GitHub, include a user agent string. This unbreaks "Sign in with GitHub"
Patch contributed by GitHub user pmark.
v0.6.2, 2013-Apr-16
Better error reporting:
Capture real stack traces for
Meteor.Error.Report better errors with misconfigured OAuth services.
Add per-package upgrade notices to
meteor update.Experimental server-to-server DDP support:
Meteor.connecton the server will connect to a remote DDP endpoint via WebSockets. Method calls should work fine, but subscriptions and minimongo on the server are still a work in progress.Upgrade d3 from 2.x to 3.1.4. See https://github.com/mbostock/d3/wiki/Upgrading-to-3.0 for compatibility notes.
Allow CoffeeScript to set global variables when using
use strict. #933Return the inserted documented ID from
LocalCollection.insert. #908Add Weibo token expiration time to
services.weibo.expiresAt.Spiderable.userAgentRegExpscan now be modified to change what user agents are treated as spiders by thespiderablepackage.Prevent observe callbacks from affecting the arguments to identical observes. #855
Fix meteor command line tool when run from a home directory with spaces in its name. If you previously installed meteor release 0.6.0 or 0.6.1 you'll need to uninstall and reinstall meteor to support users with spaces in their usernames (see https://github.com/meteor/meteor/blob/master/README.md#uninstalling-meteor)
Patches contributed by GitHub users andreas-karlsson, awwx, jacott, joshuaconner, and timhaines.
v0.6.1, 2013-Apr-08
Correct NPM behavior in packages in case there is a
node_modulesdirectory somewhere above the app directory. #927Small bug fix in the low-level
routepolicypackage.
Patches contributed by GitHub users andreas-karlsson and awwx.
v0.6.0, 2013-Apr-04
Meteor has a brand new distribution system! In this new system, code-named Engine, packages are downloaded individually and on demand. All of the packages in each official Meteor release are prefetched and cached so you can still use Meteor while offline. You can have multiple releases of Meteor installed simultaneously; apps are pinned to specific Meteor releases. All
meteorcommands accept a--releaseargument to specify which release to use;meteor updatechanges what release the app is pinned to. Inside an app, the name of the release is available atMeteor.release. When running Meteor directly from a git checkout, the release is ignored.Variables declared with
varat the outermost level of a JavaScript source file are now private to that file. Remove thevarto share a value between files.Meteor now supports any x86 (32- or 64-bit) Linux system, not just those which use Debian or RedHat package management.
Apps may contain packages inside a top-level directory named
packages.Packages may depend on NPM modules, using the new
Npm.dependsdirective in theirpackage.jsfile. (Note: if the NPM module has architecture-specific binary components, bundles built withmeteor bundleormeteor deploywill contain the components as built for the developer's platform and may not run on other platforms.)Meteor's internal package tests (as well as tests you add to your app's packages with the unsupported
Tinytestframework) are now run with the new commandmeteor test-packages.{{#each}}helper can now iterate over falsey values without throwing an exception. #815, #801{{#with}}helper now only includes its block if its argument is not falsey, and runs an{{else}}block if provided if the argument is falsey. #770, #866Twitter login now stores
profile_image_urlandprofile_image_url_httpsattributes in theuser.services.twitternamespace. #788Allow packages to register file extensions with dots in the filename.
When calling
this.changedin a publish function, it is no longer an error to clear a field which was never set. #850Deps API
Add
dep.depend(), deprecateDeps.depend(dep)anddep.addDependent().If first run of
Deps.autorunthrows an exception, stop it and don't rerun. This prevents a Spark exception when template rendering fails ("Can't call 'firstNode' of undefined").If an exception is thrown during
Deps.flushwith no stack, the message is logged instead. #822When connecting to MongoDB, use the JavaScript BSON parser unless specifically requested in
MONGO_URL; the native BSON parser sometimes segfaults. (Meteor only started using the native parser in 0.5.8.)Calls to the
updatecollection function in untrusted code may only use a whitelisted list of modifier operators.
Patches contributed by GitHub users awwx, blackcoat, cmather, estark37, mquandalle, Primigenus, raix, reustle, and timhaines.
v0.5.9, 2013-Mar-14
Fix regression in 0.5.8 that prevented users from editing their own profile. #809
Fix regression in 0.5.8 where
Meteor.loggingIn()would not update reactively. #811
v0.5.8, 2013-Mar-13
Calls to the
updateandremovecollection functions in untrusted code may no longer use arbitrary selectors. You must specify a single document ID when invoking these functions from the client (other than in a method stub).You may still use other selectors when calling
updateandremoveon the server and from client method stubs, so you can replace calls that are no longer supported (eg, in event handlers) with custom method calls.The corresponding
updateandremovecallbacks passed toallowanddenynow take a single document instead of an array.Add new
appcachepackage. Add this package to your project to speed up page load and make hot code reload smoother using the HTML5 AppCache API. See http://docs.meteor.com/#appcache for details.Rewrite reactivity library.
Meteor.depsis nowDepsand has a new API.Meteor.autorunandMeteor.flushare now calledDeps.autorunandDeps.flush(the old names still work for now). The other names underMeteor.depssuch asContextno longer exist. The new API is documented at http://docs.meteor.com/#depsYou can now provide a
transformoption to collections, which is a function that documents coming out of that collection are passed through.find,findOne,allow, anddenynow taketransformoptions, which may override the Collection'stransform. Specifying atransformofnullcauses you to receive the documents unmodified.Publish functions may now return an array of cursors to publish. Currently, the cursors must all be from different collections. #716
User documents have id's when
onCreateUserandvalidateNewUserhooks run.Encode and store custom EJSON types in MongoDB.
Support literate CoffeeScript files with the extension
.litcoffee. #766Add new login service provider for Meetup.com in
accounts-meetuppackage.If you call
observeorobserveChangeson a cursor created with thereactive: falseoption, it now only calls initial add callbacks and does not continue watching the query. #771In an event handler, if the data context is falsey, default it to
{}rather than to the global object. #777Allow specifying multiple event handlers for the same selector. #753
Revert caching header change from 0.5.5. This fixes image flicker on redraw.
Stop making
Sessionavailable on the server; it's not useful there. #751Force URLs in stack traces in browser consoles to be hyperlinks. #725
Suppress spurious
changedcallbacks with emptyfieldsfromCursor.observeChanges.Fix logic bug in template branch matching. #724
Make
spiderableuser-agent test case insensitive. #721Fix several bugs in EJSON type support:
Fix
{$type: 5}selectors for binary values on browsers that do not supportUint8Array.Fix EJSON equality on falsey values.
Fix for returning a scalar EJSON type from a method. #731
Upgraded dependencies:
mongodb driver to version 1.2.13 (from 0.1.11)
mime module removed (it was unused)
Patches contributed by GitHub users awwx, cmather, graemian, jagill, jmhredsox, kevinxucs, krizka, mitar, raix, and rasmuserik.
v0.5.7, 2013-Feb-21
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 themadewithpackage, apps usingmadewithmust upgrade.New 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 withadded,changedandremovedcallbacks is now unordered; for ordering information useaddedAt,changedAt,removedAt, andmovedTo. Full documentation is in theobservedocs. All callers ofobserveneed to be updated.Changed the API for publish functions that do not return a cursor (ie functions that call
this.setandthis.unset). See thepublishdocs for the new API.New Features
Added new
observeChangesAPI 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
_idfields for inserts instead of strings. This allows you to use Meteor with existing MongoDB databases that have ObjectID_ids. If you do this, you must useEJSON.equals()for comparing equality instead of===. See http://docs.meteor.com/#meteor_collection.New
randompackage provides several functions for generating random values. The newRandom.id()function is used to provide shorter string IDs for MongoDB documents.Meteor.uuid()is deprecated.Meteor.status()can return the statusfailedif 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
_idwhen updates for a different specific_idare processed. This drastically improves performance when dealing with many subscriptions and updates to individual objects, such as those generated by theaccounts-basepackage on theMeteor.userscollection.Upgraded UglifyJS2 to version 2.2.5
Patches contributed by GitHub users awwx and michaelglenadams.
v0.5.6, 2013-Feb-15
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, 2013-Feb-13
Deprecate
Meteor.autosubscribe.Meteor.subscribenow works withinMeteor.autorun.Allow access to
Meteor.settings.publicon the client. If the JSON file you gave tometeor --settingsincludes a field calledpublic, that field will be available on the client as well as the server.@importworks inless. Use the.lessimportfile extension to make a less file that is ignored by preprocessor so as to avoid double processing. #203Upgrade Fibers to version 1.0.0. The
FiberandFuturesymbols are no longer exposed globally. To use fibers directly you can use:var Fiber = __meteor_bootstrap__.require('fibers');andvar Future = __meteor_bootstrap__.require('fibers/future');Call version 1.1 of the Twitter API when authenticating with OAuth.
accounts-twitterusers have until March 5th, 2013 to upgrade before Twitter disables the old API. #527Treat Twitter ids as strings, not numbers, as recommended by Twitter. #629
You can now specify the
_idfield of a document passed toinsert. Meteor still auto-generates_idif it is not present.Expose an
invalidatedflag onMeteor.deps.Context.Populate user record with additional data from Facebook and Google. #664
Add Facebook token expiration time to
services.facebook.expiresAt. #576Allow piping a password to
meteor deployonstdin. #623Correctly type cast arguments to handlebars helper. #617
Fix leaked global
userIdsymbol.Terminate
phantomjsproperly on error when using thespiderablepackage. #571Stop 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.httpparsing of JSON responses on Firefox. #553Minimongo no longer uses
eval. #480Serve 404 for
/app.manifest. This allows experimenting with the upcomingappcachesmart package. #628Upgraded 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, 2013-Jan-08
- Fix 0.5.3 regression:
meteor runcould fail on OSX 10.8 if environment variables such asDYLD_LIBRARY_PATHare set.
v0.5.3, 2013-Jan-07
Add
--settingsargument tometeor deployandmeteor run. This allows you to specify deployment-specific information made available to server code in the variableMeteor.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
skiporlimit. #528Allow sorting on
dotted.sub.keys. #533Allow querying specific array elements (
foo.1.bar).$and,$or, and$norno longer accept empty arrays (for consistency with Mongo)Re-rendering a template with Spark no longer reverts changes made by users to a
preserved form element. Instead, the newly rendered value is only applied if it is different from the previously rendered value. Additionally,<INPUT>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 #558Support JavaScript RegExp objects in selectors in Collection write methods on the client, eg
myCollection.remove({foo: /bar/}). #346meteorcommand-line improvements:Improve error message when mongod fails to start.
The
NODE_OPTIONSenvironment variable can be used to pass command-line flags to node (eg,--debugor--debug-brkto 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
serviceDatafields from previous logins when logging in with an external service.Improve
OAuth1Bindingto allow making authenticated API calls to OAuth1 providers (eg Twitter). #539New login providers automatically work with
{{loginButtons}}without needing to edit theaccounts-ui-unstyledpackage. #572Use
Content-Type: application/jsonby default when sending JSON data withMeteor.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
<SELECT>elements on IE. #496Don't lose nested data contexts in IE9/10 after two seconds. #458
Don't print a stack trace if DOM nodes are manually removed from the document without calling
Spark.finalize. #392Always use the
autoReconnectflag when connecting to Mongo. #425Fix server-side
observewith noaddedcallback. #589Fix re-sending method calls on reconnect. #538
Remove deprecated
/sockjsURL support fromMeteor.connect.Avoid losing a few bits of randomness in UUID v4 creation. #519
Update clean-css package from 0.8.2 to 0.8.3, fixing minification of
0%values inhslcolors. #515
Patches contributed by GitHub users Ed-von-Schleck, egtann, jwulf, lvbreda, martin-naumann, meawoppl, nwmartin, timhaines, and zealoushacker.
v0.5.2, 2012-Nov-27
- Fix 0.5.1 regression: Cursor
observeworks during server startup. #507
v0.5.1, 2012-Nov-20
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.callandMeteor.apply, as well as to theMeteor.Collectioninsert/update/removemethods.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
onResultReceivedcallback toMeteor.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 atMeteor.user()could be incomplete. Meteor provided the functionMeteor.userLoaded()to differentiate between these states. Now, this in-between state does not occur: when a user logs in,Meteor.userId()only is set onceMeteor.user()is fully loaded.New reactive function
Meteor.loggingIn()and template helper{{loggingIn}}; they are true whenever some login method is in progress.accounts-uinow uses this to show an animation during login.The
sassCSS 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 thelessorstyluspackages instead. #143Meteor.setPasswordis now calledAccounts.setPassword, matching the documentation and original intention. #454Passing the
waitoption toMeteor.applynow 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.callLoginMethodwhich should be used to call custom login handlers (such as those registered withAccounts.registerLoginHandler).The callbacks for
Meteor.loginWithTokenandAccounts.createUsernow 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
meteorcommand-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.joininstead of/in paths (helpful for the unofficial Windows port) #303The
spiderablepackage serves pages tofacebookexternalhit#411Fix 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, 2012-Oct-17
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.allowandcollection.denycalls to specify which users can perform which write operations, oradd the
insecuresmart 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 withallowordenyFor more information on Meteor Accounts, see http://docs.meteor.com/#dataandsecurity and http://docs.meteor.com/#accounts_api
The new function
Meteor.autorunallows you run any code in a reactive context. See http://docs.meteor.com/#meteor_autorunArrays and objects can now be stored in the
Session; mutating the value you retrieve withSession.getdoes not affect the value in the session.On the client,
Meteor.applytakes a newwaitoption, 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 anonReconnecthandler 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
localStoragefacility that works in IE7, in thelocalstorage-polyfillsmart package.Meteor now packages the D3 library for manipulating documents based on data in a smart package called
d3.Meteor.Collectionnow takes its optionalmanagerargument (used to associate a collection with a server you've connected to withMeteor.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, 2012-Oct-02
Fix connection failure on iOS6. SockJS 0.3.3 includes this fix.
The new
preserve-inputspackage, 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.absoluteUrlfunction:Added a
replaceLocalhostoption.The
ROOT_URLenvironment variable is respected bymeteor run.It is now included in all apps via the
meteorpackage. Apps that explicitly added the now-deprecatedabsolute-urlsmart package will log a deprecation warning.Upgrade Node from 0.8.8 to 0.8.11.
If a Handlebars helper function
fooreturns null, you can now run do{{foo.bar}}without error, just like whenfoois a non-existent property.If you pass a non-scalar object to
Session.set, an error will now be thrown (matching the behavior ofSession.equals). #215HTML pages are now served with a
charset=utf-8Content-Type header. #264The contents of
<select>tags can now be reactive even in IE 7 and 8.The
meteortool no longer gets confused if a parent directory of your project is namedpublic. #352Fix a race condition in the
spiderablepackage which could include garbage in the spidered page.The REPL run by
admin/node.shno longer crashes Emacs M-x shell on exit.Refactor internal
reloadAPI.New internal
jsparsesmart package. Not yet exposed publicly.
Patch contributed by GitHub user yanivoliver.
v0.4.1, 2012-Sep-24
New
emailsmart package, withEmail.sendAPI.Upgrade Node from 0.6.17 to 0.8.8, as well as many Node modules in the dev bundle; those that are user-exposed are:
coffee-script: 1.3.3 (from 1.3.1)
stylus: 0.29.0 (from 0.28.1)
nib: 0.8.2 (from 0.7.0)
All publicly documented APIs now use
camelCaserather thanunder_scores. The old spellings continue to work for now. New names are:Meteor.isClient/isServerthis.isSimulationinside a method invocationMeteor.deps.Context.onInvalidateMeteor.status().retryCount/retryTimeSpark improvements
Optimize selector matching for event maps.
Fix
Spark._currentRendererbehavior in timer callbacks.Fix bug caused by interaction between
Template.foo.preserveand{{#constant}}. #323Allow
{{#each}}over a collection of objects without_id. #281Spark now supports Firefox 3.6.
Added a script to build a standalone spark.js that does not depend on Meteor (it depends on jQuery or Sizzle if you need IE7 support, and otherwise is fully standalone).
Database writes from within
Meteor.setTimeout/setInterval/deferwill be batched with other writes from the current method invocation if they start before the method completes.Make
Meteor.Cursor.forEachfully synchronous even if the user's callback yields. #321.Recover from exceptions thrown in
Meteor.publishhandlers.Change the implementation of the
meteor deploypassword prompt to not crash Emacs M-x shell.Optimize
LocalCollection.remove(id)to be O(1) rather than O(n).Optimize client-side database performance when receiving updated data from the server outside of method calls.
Better error reporting when a package in
.meteor/packagesdoes not exist.Better error reporting for coffeescript. #331
Better error handling in
Handlebars.Exception.
Patches contributed by GitHub users fivethirty, tmeasday, and xenolf.
v0.4.0, 2012-Aug-30
Merge Spark, a new live page update engine
Breaking API changes
- Input elements no longer preserved based on
idandnameattributes. Usepreserveinstead. - All
Meteor.uifunctions removed. UseMeteor.render,Meteor.renderList, and Spark functions instead. - New template functions (eg.
created,rendered, etc) may collide with existing helpers. UseTemplate.foo.helpers()to avoid conflicts. - New syntax for declaring event maps. Use
Template.foo.events({...}). For backwards compatibility, both syntaxes are allowed for now.
- Input elements no longer preserved based on
New Template features
- Allow embedding non-Meteor widgets (eg. Google Maps) using
{{#constant}} - Callbacks when templates are rendered. See http://docs.meteor.com/#template_rendered
- Explicit control of which nodes are preserved during re-rendering. See http://docs.meteor.com/#template_preserve
- Easily find nodes within a template in event handlers and callbacks. See http://docs.meteor.com/#template_find
- Allow parts of a template to be independently reactive with the
{{#isolate}}block helper.
- Allow embedding non-Meteor widgets (eg. Google Maps) using
Use PACKAGE_DIRS environment variable to override package location. #227
Add
absolute-urlpackage to construct URLs pointing to the application.Allow modifying documents returned by
observecallbacks. #209Fix periodic crash after client disconnect. #212
Fix minimingo crash on dotted queries with undefined keys. #126
v0.3.9, 2012-Aug-07
Add
spiderablepackage to allow web crawlers to index Meteor apps.meteor deployuses SSL to protect application deployment.Fix
stopImmediatePropagation(). #205
v0.3.8, 2012-Jul-12
HTTPS support
Add
force-sslpackage to require site to load over HTTPS.Use HTTPS for install script and
meteor update.Allow runtime configuration of default DDP endpoint.
Handlebars improvements
Implement dotted path traversal for helpers and methods.
Allow functions in helper arguments.
Change helper nesting rules to allow functions as arguments.
Fix
{{this.foo}}to never invoke helperfoo.Make event handler
thisreflect the node that matched the selector instead of the event target node.Fix keyword arguments to helpers.
Add
nibsupport to stylus package. #175Upgrade bootstrap to version 2.0.4. #173
Print changelog after
meteor update.Fix mouseenter and mouseleave events. #224
Fix issue with spurious heartbeat failures on busy connections.
Fix exception in minimongo when matching non-arrays using
$all. #183Fix serving an empty file when no cacheable assets exist. #179
v0.3.7, 2012-Jun-06
Better parsing of
.htmltemplate filesAllow HTML comments (
<!-- -->) at top levelAllow whitespace anywhere in open/close tag
Provide names and line numbers on error
More helpful error messages
Form control improvements
Fix reactive radio buttons in Internet Explorer.
Fix reactive textareas to update consistently across browsers, matching text field behavior.
httppackage bug fixes:Send correct Content-Type when POSTing
paramsfrom the server. #172Correctly detect JSON response Content-Type when a charset is present.
Support
Handlebars.SafeString. #160Fix intermittent "Cursor is closed" mongo error.
Fix "Cannot read property 'nextSibling' of null" error in certain nested templates. #142
Add heartbeat timer on the client to notice when the server silently goes away.
v0.3.6, 2012-May-16
Rewrite event handling.
thisin event handlers now refers to the data context of the element that generated the event, not the top-level data context of the template where the event is declared.Add /websocket endpoint for raw websockets. Pass websockets through development mode proxy.
Simplified API for Meteor.connect, which now receives a URL to a Meteor app rather than to a sockjs endpoint.
Fix livedata to support subscriptions with overlapping documents.
Update node.js to 0.6.17 to fix potential security issue.
v0.3.5, 2012-Apr-28
- Fix 0.3.4 regression: Call event map handlers on bubbled events. #107
v0.3.4, 2012-Apr-27
Add Twitter
bootstrappackage. #84Add packages for
sassandstylusCSS pre-processors. #40, #50Bind events correctly on top level elements in a template.
Fix dotted path selectors in minimongo. #88
Make
backbonepackage also run on the server.Add
bareoption to coffee-script compilation so variables can be shared between multiple coffee-script file. #85Upgrade many dependency versions. User visible highlights:
node.js 0.6.15
coffee-script 1.3.1
less 1.3.0
sockjs 0.3.1
underscore 1.3.3
backbone 0.9.2
Several documentation fixes and test coverage improvements.
v0.3.3, 2012-Apr-20
Add
httppackage for making HTTP requests to remote servers.Add
madewithpackage to put a live-updating Made with Meteor badge on apps.Reduce size of mongo database on disk (--smallfiles).
Prevent unnecessary hot-code pushes on deployed apps during server migration.
Fix issue with spaces in directory names. #39
Workaround browser caching issues in development mode by using query parameters on all JavaScript and CSS requests.
Many documentation and test fixups.
v0.3.2, 2012-Apr-10
- Initial public launch