From 6b7a99101da6b441037b81de69e819c02134182c Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 27 Aug 2014 02:36:11 -0700 Subject: [PATCH 01/12] Start of History.md for 0.9.0.1 --- History.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/History.md b/History.md index 07633ee5a1..fa81ffc511 100644 --- a/History.md +++ b/History.md @@ -1,5 +1,27 @@ ## v.NEXT +## v0.9.0.1 + +* 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 packaging containing a plugin with platform-specific code but + no platform-specific code in the main package. + +* Fix 'meteor add package@version' when 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 list` won't suggest that you update to + them. + +* Fix stack trace on `meteor add` constraint solver failure. + +* Fix "access-denied" stack trace when publishing packages. + + ## v0.9.0 Meteor 0.9.0 introduces the Meteor Package Server. Incorporating lessons from From 68c8a841555d5394bdc92ba805209c7708fcc966 Mon Sep 17 00:00:00 2001 From: Matthew Arbesfeld Date: Wed, 27 Aug 2014 12:17:22 -0700 Subject: [PATCH 02/12] Fix for SIGUSR2 signals during startup. There was a rare race condition where SIGUSR2 can fire before the server starts listening, causing some functions to fail. We added a future to the synchronous queue to ensure that SIGUSR2 calls are queued to run after onListen. --- packages/autoupdate/autoupdate_server.js | 144 +++++++++++++---------- 1 file changed, 81 insertions(+), 63 deletions(-) diff --git a/packages/autoupdate/autoupdate_server.js b/packages/autoupdate/autoupdate_server.js index 60358afaa2..7277c047e2 100644 --- a/packages/autoupdate/autoupdate_server.js +++ b/packages/autoupdate/autoupdate_server.js @@ -34,6 +34,8 @@ // version. Developers can easily experiment with different versioning and // updating models by forking this package. +var Future = Npm.require("fibers/future"); + Autoupdate = {}; // The collection of acceptable client versions. @@ -54,76 +56,70 @@ var syncQueue = new Meteor._SynchronousQueue(); // updateVersions can only be called after the server has fully loaded. var updateVersions = function (shouldReloadClientProgram) { - syncQueue.runTask(function () { - // Step 1: load the current client program on the server and update the - // hash values in __meteor_runtime_config__. - if (shouldReloadClientProgram) { - WebAppInternals.reloadClientProgram(); - } + // Step 1: load the current client program on the server and update the + // hash values in __meteor_runtime_config__. + if (shouldReloadClientProgram) { + WebAppInternals.reloadClientProgram(); + } - // If we just re-read the client program, or if we don't have an autoupdate - // version, calculate it. - if (shouldReloadClientProgram || Autoupdate.autoupdateVersion === null) { - Autoupdate.autoupdateVersion = - process.env.AUTOUPDATE_VERSION || - process.env.SERVER_ID || // XXX COMPAT 0.6.6 - WebApp.calculateClientHashNonRefreshable(); - } - // If we just recalculated it OR if it was set by (eg) test-in-browser, - // ensure it ends up in __meteor_runtime_config__. - __meteor_runtime_config__.autoupdateVersion = - Autoupdate.autoupdateVersion; + // If we just re-read the client program, or if we don't have an autoupdate + // version, calculate it. + if (shouldReloadClientProgram || Autoupdate.autoupdateVersion === null) { + Autoupdate.autoupdateVersion = + process.env.AUTOUPDATE_VERSION || + process.env.SERVER_ID || // XXX COMPAT 0.6.6 + WebApp.calculateClientHashNonRefreshable(); + } + // If we just recalculated it OR if it was set by (eg) test-in-browser, + // ensure it ends up in __meteor_runtime_config__. + __meteor_runtime_config__.autoupdateVersion = + Autoupdate.autoupdateVersion; - Autoupdate.autoupdateVersionRefreshable = - __meteor_runtime_config__.autoupdateVersionRefreshable = - process.env.AUTOUPDATE_VERSION || - process.env.SERVER_ID || // XXX COMPAT 0.6.6 - WebApp.calculateClientHashRefreshable(); + Autoupdate.autoupdateVersionRefreshable = + __meteor_runtime_config__.autoupdateVersionRefreshable = + process.env.AUTOUPDATE_VERSION || + process.env.SERVER_ID || // XXX COMPAT 0.6.6 + WebApp.calculateClientHashRefreshable(); - // Step 2: form the new client boilerplate which contains the updated - // assets and __meteor_runtime_config__. - if (shouldReloadClientProgram) { - WebAppInternals.generateBoilerplate(); - } + // Step 2: form the new client boilerplate which contains the updated + // assets and __meteor_runtime_config__. + if (shouldReloadClientProgram) { + WebAppInternals.generateBoilerplate(); + } - // XXX COMPAT WITH 0.8.3 - if (! ClientVersions.findOne({current: true})) { - // To ensure apps with version of Meteor prior to 0.9.0 (in - // which the structure of documents in `ClientVersions` was - // different) also reload. - ClientVersions.insert({current: true}); - } + // XXX COMPAT WITH 0.8.3 + if (! ClientVersions.findOne({current: true})) { + // To ensure apps with version of Meteor prior to 0.9.0 (in + // which the structure of documents in `ClientVersions` was + // different) also reload. + ClientVersions.insert({current: true}); + } - if (! ClientVersions.findOne({_id: "version"})) { - ClientVersions.insert({ - _id: "version", - version: Autoupdate.autoupdateVersion, - }); - } else { - ClientVersions.update("version", { $set: { - version: Autoupdate.autoupdateVersion, - }}); - } + if (! ClientVersions.findOne({_id: "version"})) { + ClientVersions.insert({ + _id: "version", + version: Autoupdate.autoupdateVersion, + }); + } else { + ClientVersions.update("version", { $set: { + version: Autoupdate.autoupdateVersion, + }}); + } - if (! ClientVersions.findOne({_id: "version-refreshable"})) { - ClientVersions.insert({ - _id: "version-refreshable", - version: Autoupdate.autoupdateVersionRefreshable, - assets: WebAppInternals.refreshableAssets - }); - } else { - ClientVersions.update("version-refreshable", { $set: { - version: Autoupdate.autoupdateVersionRefreshable, - assets: WebAppInternals.refreshableAssets - }}); - } - }); + if (! ClientVersions.findOne({_id: "version-refreshable"})) { + ClientVersions.insert({ + _id: "version-refreshable", + version: Autoupdate.autoupdateVersionRefreshable, + assets: WebAppInternals.refreshableAssets + }); + } else { + ClientVersions.update("version-refreshable", { $set: { + version: Autoupdate.autoupdateVersionRefreshable, + assets: WebAppInternals.refreshableAssets + }}); + } }; -Meteor.startup(function () { - updateVersions(false); -}); - Meteor.publish( "meteor_autoupdate_clientVersions", function () { @@ -132,7 +128,29 @@ Meteor.publish( {is_auto: true} ); +Meteor.startup(function () { + updateVersions(false); +}); + +var fut = new Future(); + +// We only want SIGUSR2 to trigger 'updateVersions' AFTER onListen, +// so we add a queued task that waits for onListen before SIGUSR2 can queue +// tasks. Note that the `onListening` callbacks do not fire until after +// Meteor.startup, so there is no concern that the 'updateVersions' calls +// from SIGUSR2 will overlap with the `updateVersions` call from Meteor.startup. + +syncQueue.queueTask(function () { + fut.wait(); +}); + +WebApp.onListening(function () { + fut.return(); +}); + // Listen for SIGUSR2, which signals that a client asset has changed. process.on('SIGUSR2', Meteor.bindEnvironment(function () { - updateVersions(true); + syncQueue.queueTask(function () { + updateVersions(true); + }); })); From f1a7455d4cf85ad9f05c7f6b686f0fdbf1d2ec1f Mon Sep 17 00:00:00 2001 From: Justin SB Date: Tue, 26 Aug 2014 20:24:37 -0700 Subject: [PATCH 03/12] Spiderable now uses a flag to determine when the initial JS has loaded Other approaches seemed to be heuristics that broke down in edge cases: a timeout wasn't guaranteed if your JS was slow; page.load in PhantomJS wasn't firing reliably because of long polling. --- packages/spiderable/package.js | 6 +- packages/spiderable/phantom_script.js | 50 +++++++---- packages/spiderable/spiderable.js | 109 ----------------------- packages/spiderable/spiderable_client.js | 30 +++++++ packages/spiderable/spiderable_server.js | 109 +++++++++++++++++++++++ 5 files changed, 175 insertions(+), 129 deletions(-) create mode 100644 packages/spiderable/spiderable_client.js create mode 100644 packages/spiderable/spiderable_server.js diff --git a/packages/spiderable/package.js b/packages/spiderable/package.js index 875ba8c5d5..55017fba45 100644 --- a/packages/spiderable/package.js +++ b/packages/spiderable/package.js @@ -8,10 +8,12 @@ Package.on_use(function (api) { api.use(['templating'], 'client'); api.use(['underscore'], ['client', 'server']); - api.export('Spiderable', 'server'); + api.export('Spiderable'); api.add_files('spiderable.html', 'client'); - api.add_files('spiderable.js', 'server'); + api.add_files('spiderable.js', ['client', 'server']); + api.add_files('spiderable_server.js', 'server'); + api.add_files('spiderable_client.js', 'client'); api.add_files('phantom_script.js', 'server', { isAsset: true }); }); diff --git a/packages/spiderable/phantom_script.js b/packages/spiderable/phantom_script.js index a4208d1547..8b5830a1df 100644 --- a/packages/spiderable/phantom_script.js +++ b/packages/spiderable/phantom_script.js @@ -1,26 +1,40 @@ // 'url' is assigned to in a statement before this. var page = require('webpage').create(); + +var isReady = function () { + return page.evaluate(function () { + if (typeof Meteor === 'undefined' + || Meteor.status === undefined + || !Meteor.status().connected) { + return false; + } + if (typeof Package === 'undefined' + || Package.spiderable === undefined + || Package.spiderable.Spiderable === undefined + || !Package.spiderable.Spiderable._initialSubscriptionsStarted) { + return false; + } + Deps.flush(); + return DDP._allSubscriptionsReady(); + }); +}; + +var dumpPageContent = function () { + var out = page.content; + out = out.replace(/]+>(.|\n|\r)*?<\/script\s*>/ig, ''); + out = out.replace('', ''); + console.log(out); +}; + page.open(url, function(status) { if (status === 'fail') phantom.exit(); - setInterval(function() { - var ready = page.evaluate(function () { - if (typeof Meteor !== 'undefined' - && typeof(Meteor.status) !== 'undefined' - && Meteor.status().connected) { - Deps.flush(); - return DDP._allSubscriptionsReady(); - } - return false; - }); - if (ready) { - var out = page.content; - out = out.replace(/]+>(.|\n|\r)*?<\/script\s*>/ig, ''); - out = out.replace('', ''); - console.log(out); - phantom.exit(); - } - }, 100); }); +setInterval(function() { + if (isReady()) { + dumpPageContent(); + phantom.exit(); + } +}, 100); diff --git a/packages/spiderable/spiderable.js b/packages/spiderable/spiderable.js index 4d70f2f82e..915ba9c9b5 100644 --- a/packages/spiderable/spiderable.js +++ b/packages/spiderable/spiderable.js @@ -1,111 +1,2 @@ -var fs = Npm.require('fs'); -var child_process = Npm.require('child_process'); -var querystring = Npm.require('querystring'); -var urlParser = Npm.require('url'); - Spiderable = {}; -// list of bot user agents that we want to serve statically, but do -// not obey the _escaped_fragment_ protocol. The page is served -// statically to any client whos user agent matches any of these -// regexps. Users may modify this array. -// -// An original goal with the spiderable package was to avoid doing -// user-agent based tests. But the reality is not enough bots support -// the _escaped_fragment_ protocol, so we need to hardcode a list -// here. I shed a silent tear. -Spiderable.userAgentRegExps = [ - /^facebookexternalhit/i, /^linkedinbot/i, /^twitterbot/i]; - -// how long to let phantomjs run before we kill it -var REQUEST_TIMEOUT = 15*1000; -// maximum size of result HTML. node's default is 200k which is too -// small for our docs. -var MAX_BUFFER = 5*1024*1024; // 5MB - -// Exported for tests. -Spiderable._urlForPhantom = function (siteAbsoluteUrl, requestUrl) { - // reassembling url without escaped fragment if exists - var parsedUrl = urlParser.parse(requestUrl); - var parsedQuery = querystring.parse(parsedUrl.query); - delete parsedQuery['_escaped_fragment_']; - - var parsedAbsoluteUrl = urlParser.parse(siteAbsoluteUrl); - // If the ROOT_URL contains a path, Meteor strips that path off of the - // request's URL before we see it. So we concatenate the pathname from - // the request's URL with the root URL's pathname to get the full - // pathname. - if (parsedUrl.pathname.charAt(0) === "/") { - parsedUrl.pathname = parsedUrl.pathname.substring(1); - } - parsedAbsoluteUrl.pathname = urlParser.resolve(parsedAbsoluteUrl.pathname, - parsedUrl.pathname); - parsedAbsoluteUrl.query = parsedQuery; - // `url.format` will only use `query` if `search` is absent - parsedAbsoluteUrl.search = null; - - return urlParser.format(parsedAbsoluteUrl); -}; - -var PHANTOM_SCRIPT = Assets.getText("phantom_script.js"); - -WebApp.connectHandlers.use(function (req, res, next) { - // _escaped_fragment_ comes from Google's AJAX crawling spec: - // https://developers.google.com/webmasters/ajax-crawling/docs/specification - // This spec was designed during the brief era where using "#!" URLs was - // common, so it mostly describes how to translate "#!" URLs into - // _escaped_fragment_ URLs. Since then, "#!" URLs have gone out of style, but - // the (see spiderable.html) approach also - // described in the spec is still common and used by several crawlers. - if (/\?.*_escaped_fragment_=/.test(req.url) || - _.any(Spiderable.userAgentRegExps, function (re) { - return re.test(req.headers['user-agent']); })) { - - var url = Spiderable._urlForPhantom(Meteor.absoluteUrl(), req.url); - - // This string is going to be put into a bash script, so it's important - // that 'url' (which comes from the network) can neither exploit phantomjs - // or the bash script. JSON stringification should prevent it from - // exploiting phantomjs, and since the output of JSON.stringify shouldn't - // be able to contain newlines, it should be unable to exploit bash as - // well. - var phantomScript = "var url = " + JSON.stringify(url) + ";" + - PHANTOM_SCRIPT; - - // Run phantomjs. - // - // Use '/dev/stdin' to avoid writing to a temporary file. We can't - // just omit the file, as PhantomJS takes that to mean 'use a - // REPL' and exits as soon as stdin closes. - // - // However, Node 0.8 broke the ability to open /dev/stdin in the - // subprocess, so we can't just write our string to the process's stdin - // directly; see https://gist.github.com/3751746 for the gory details. We - // work around this with a bash heredoc. (We previous used a "cat |" - // instead, but that meant we couldn't use exec and had to manage several - // processes.) - child_process.execFile( - '/bin/bash', - ['-c', - ("exec phantomjs --load-images=no /dev/stdin <<'END'\n" + - phantomScript + "END\n")], - {timeout: REQUEST_TIMEOUT, maxBuffer: MAX_BUFFER}, - function (error, stdout, stderr) { - if (!error && / (see spiderable.html) approach also + // described in the spec is still common and used by several crawlers. + if (/\?.*_escaped_fragment_=/.test(req.url) || + _.any(Spiderable.userAgentRegExps, function (re) { + return re.test(req.headers['user-agent']); })) { + + var url = Spiderable._urlForPhantom(Meteor.absoluteUrl(), req.url); + + // This string is going to be put into a bash script, so it's important + // that 'url' (which comes from the network) can neither exploit phantomjs + // or the bash script. JSON stringification should prevent it from + // exploiting phantomjs, and since the output of JSON.stringify shouldn't + // be able to contain newlines, it should be unable to exploit bash as + // well. + var phantomScript = "var url = " + JSON.stringify(url) + ";" + + PHANTOM_SCRIPT; + + // Run phantomjs. + // + // Use '/dev/stdin' to avoid writing to a temporary file. We can't + // just omit the file, as PhantomJS takes that to mean 'use a + // REPL' and exits as soon as stdin closes. + // + // However, Node 0.8 broke the ability to open /dev/stdin in the + // subprocess, so we can't just write our string to the process's stdin + // directly; see https://gist.github.com/3751746 for the gory details. We + // work around this with a bash heredoc. (We previous used a "cat |" + // instead, but that meant we couldn't use exec and had to manage several + // processes.) + child_process.execFile( + '/bin/bash', + ['-c', + ("exec phantomjs --load-images=no /dev/stdin <<'END'\n" + + phantomScript + "END\n")], + {timeout: REQUEST_TIMEOUT, maxBuffer: MAX_BUFFER}, + function (error, stdout, stderr) { + if (!error && / Date: Wed, 27 Aug 2014 12:26:49 -0700 Subject: [PATCH 04/12] history updates --- History.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/History.md b/History.md index fa81ffc511..b3bde16692 100644 --- a/History.md +++ b/History.md @@ -17,6 +17,11 @@ unless explicitly requested. `meteor list` won'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 add` constraint solver failure. * Fix "access-denied" stack trace when publishing packages. From 1b639e5853add3696d72a8c51fde5db65265189c Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 14:28:03 -0700 Subject: [PATCH 05/12] Bump package versions for 0.9.0.1-rc1 --- packages/autoupdate/package.js | 2 +- packages/constraint-solver/package.js | 2 +- packages/http/package.js | 2 +- packages/less/package.js | 2 +- packages/meteor-tool/package.js | 2 +- packages/package-version-parser/package.js | 2 +- packages/spiderable/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 7 ++----- 8 files changed, 9 insertions(+), 12 deletions(-) diff --git a/packages/autoupdate/package.js b/packages/autoupdate/package.js index 2988c38690..b7f7c669c9 100644 --- a/packages/autoupdate/package.js +++ b/packages/autoupdate/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Update the client when new client code is available", - version: '1.0.4' + version: '1.0.5-rc1' }); Package.on_use(function (api) { diff --git a/packages/constraint-solver/package.js b/packages/constraint-solver/package.js index e8d9d37f2f..6b829feb08 100644 --- a/packages/constraint-solver/package.js +++ b/packages/constraint-solver/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Given the set of the constraints, picks a satisfying configuration", - version: "1.0.9" + version: "1.0.10-rc1" }); Npm.depends({ diff --git a/packages/http/package.js b/packages/http/package.js index 719d18fa1c..0ad597e180 100644 --- a/packages/http/package.js +++ b/packages/http/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Make HTTP calls to remote servers", - version: '1.0.2' + version: '1.0.3-rc1' }); Npm.depends({request: "2.33.0"}); diff --git a/packages/less/package.js b/packages/less/package.js index 6456e03c0f..78b1953f18 100644 --- a/packages/less/package.js +++ b/packages/less/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The dynamic stylesheet language", - version: "1.0.5" + version: "1.0.6-rc1" }); Package._transitional_registerBuildPlugin({ diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index 5e065311a8..be89979f45 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.25' + version: '1.0.26-rc1' }); Package.includeTool(); diff --git a/packages/package-version-parser/package.js b/packages/package-version-parser/package.js index db929959f5..3280537ee1 100644 --- a/packages/package-version-parser/package.js +++ b/packages/package-version-parser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Parses Meteor Smart Package version string", - version: "1.0.5" + version: "1.0.6-rc1" }); Npm.depends({ diff --git a/packages/spiderable/package.js b/packages/spiderable/package.js index 55017fba45..3c8c27fbcf 100644 --- a/packages/spiderable/package.js +++ b/packages/spiderable/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Makes the application crawlable to web spiders", - version: "1.0.1" + version: "1.0.2-rc1" }); Package.on_use(function (api) { diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 230c913aa5..53118714ba 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,10 +1,7 @@ { "track": "METEOR", - "version": "0.9.0-rc22", - "patchFrom": ["0.9.0-rc13", "0.9.0-rc14", "0.9.0-rc15", "0.9.0-rc16", - "0.9.0-rc17", "0.9.0-rc18", "0.9.0-rc19", "0.9.0-rc20", - "0.9.0-rc21"], + "version": "0.9.0.1-rc1", "recommended": false, - "official": true, + "official": false, "description": "The official Meteor distribution." } From 02e10f45328295c301dea08d4a892956a3dbea72 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 15:03:25 -0700 Subject: [PATCH 06/12] History tweaks --- History.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/History.md b/History.md index b3bde16692..f12d6b6b59 100644 --- a/History.md +++ b/History.md @@ -6,10 +6,10 @@ 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 packaging containing a plugin with platform-specific code but +* Fix publishing packages containing a plugin with platform-specific code but no platform-specific code in the main package. -* Fix 'meteor add package@version' when the package was already added with a +* Fix `meteor add package@version` when the package was already added with a different version constraint. * Improve treatment of pre-release packages (packages with a dash in their From 980e50ad0f96629663b27a270b2db130c5612ce8 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 15:03:37 -0700 Subject: [PATCH 07/12] Update apps to 0.9.0.1-rc1 --- docs/.meteor/release | 2 +- docs/.meteor/versions | 6 +++--- examples/clock/.meteor/release | 2 +- examples/clock/.meteor/versions | 2 +- examples/leaderboard/.meteor/release | 2 +- examples/leaderboard/.meteor/versions | 2 +- examples/parties/.meteor/release | 2 +- examples/parties/.meteor/versions | 6 +++--- examples/todos/.meteor/release | 2 +- examples/todos/.meteor/versions | 4 ++-- examples/wordplay/.meteor/release | 2 +- examples/wordplay/.meteor/versions | 2 +- 12 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/.meteor/release b/docs/.meteor/release index 6165b3d895..2287c76a12 100644 --- a/docs/.meteor/release +++ b/docs/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0 +METEOR@0.9.0.1-rc1 diff --git a/docs/.meteor/versions b/docs/.meteor/versions index 57cac3af11..6cf10199d1 100644 --- a/docs/.meteor/versions +++ b/docs/.meteor/versions @@ -1,6 +1,6 @@ appcache@1.0.0 application-configuration@1.0.0 -autoupdate@1.0.4 +autoupdate@1.0.5-rc1 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 @@ -20,7 +20,7 @@ id-map@1.0.0 jquery-waypoints@1.0.0 jquery@1.0.0 json@1.0.0 -less@1.0.5 +less@1.0.6-rc1 livedata@1.0.7 logging@1.0.2 meteor@1.0.2 @@ -39,7 +39,7 @@ session@1.0.0 showdown@1.0.0 spacebars-compiler@1.0.1 spacebars@1.0.0 -spiderable@1.0.1 +spiderable@1.0.2-rc1 standard-app-packages@1.0.0 templating@1.0.4 ui@1.0.0 diff --git a/examples/clock/.meteor/release b/examples/clock/.meteor/release index 6165b3d895..2287c76a12 100644 --- a/examples/clock/.meteor/release +++ b/examples/clock/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0 +METEOR@0.9.0.1-rc1 diff --git a/examples/clock/.meteor/versions b/examples/clock/.meteor/versions index b82db10819..4e6cf5a07f 100644 --- a/examples/clock/.meteor/versions +++ b/examples/clock/.meteor/versions @@ -1,6 +1,6 @@ application-configuration@1.0.0 autopublish@1.0.0 -autoupdate@1.0.4 +autoupdate@1.0.5-rc1 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 diff --git a/examples/leaderboard/.meteor/release b/examples/leaderboard/.meteor/release index 6165b3d895..2287c76a12 100644 --- a/examples/leaderboard/.meteor/release +++ b/examples/leaderboard/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0 +METEOR@0.9.0.1-rc1 diff --git a/examples/leaderboard/.meteor/versions b/examples/leaderboard/.meteor/versions index b82db10819..4e6cf5a07f 100644 --- a/examples/leaderboard/.meteor/versions +++ b/examples/leaderboard/.meteor/versions @@ -1,6 +1,6 @@ application-configuration@1.0.0 autopublish@1.0.0 -autoupdate@1.0.4 +autoupdate@1.0.5-rc1 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 diff --git a/examples/parties/.meteor/release b/examples/parties/.meteor/release index 6165b3d895..2287c76a12 100644 --- a/examples/parties/.meteor/release +++ b/examples/parties/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0 +METEOR@0.9.0.1-rc1 diff --git a/examples/parties/.meteor/versions b/examples/parties/.meteor/versions index aa9ae55baf..15970e5920 100644 --- a/examples/parties/.meteor/versions +++ b/examples/parties/.meteor/versions @@ -7,7 +7,7 @@ accounts-ui-unstyled@1.0.0 accounts-ui@1.0.0 application-configuration@1.0.0 audit-argument-checks@1.0.0 -autoupdate@1.0.4 +autoupdate@1.0.5-rc1 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 @@ -25,11 +25,11 @@ follower-livedata@1.0.0 geojson-utils@1.0.0 html-tools@1.0.0 htmljs@1.0.0 -http@1.0.2 +http@1.0.3-rc1 id-map@1.0.0 jquery@1.0.0 json@1.0.0 -less@1.0.5 +less@1.0.6-rc1 livedata@1.0.7 localstorage@1.0.0 logging@1.0.2 diff --git a/examples/todos/.meteor/release b/examples/todos/.meteor/release index 6165b3d895..2287c76a12 100644 --- a/examples/todos/.meteor/release +++ b/examples/todos/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0 +METEOR@0.9.0.1-rc1 diff --git a/examples/todos/.meteor/versions b/examples/todos/.meteor/versions index 960bcd7c47..b2b2581681 100644 --- a/examples/todos/.meteor/versions +++ b/examples/todos/.meteor/versions @@ -1,5 +1,5 @@ application-configuration@1.0.0 -autoupdate@1.0.4 +autoupdate@1.0.5-rc1 backbone@1.0.0 binary-heap@1.0.0 blaze-tools@1.0.0 @@ -34,7 +34,7 @@ routepolicy@1.0.0 session@1.0.0 spacebars-compiler@1.0.1 spacebars@1.0.0 -spiderable@1.0.1 +spiderable@1.0.2-rc1 standard-app-packages@1.0.0 templating@1.0.4 ui@1.0.0 diff --git a/examples/wordplay/.meteor/release b/examples/wordplay/.meteor/release index 6165b3d895..2287c76a12 100644 --- a/examples/wordplay/.meteor/release +++ b/examples/wordplay/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0 +METEOR@0.9.0.1-rc1 diff --git a/examples/wordplay/.meteor/versions b/examples/wordplay/.meteor/versions index 6d55502b58..0413a31668 100644 --- a/examples/wordplay/.meteor/versions +++ b/examples/wordplay/.meteor/versions @@ -1,5 +1,5 @@ application-configuration@1.0.0 -autoupdate@1.0.4 +autoupdate@1.0.5-rc1 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 From 6cafa333452ec873135dde4c142b62a74b31ad63 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 15:11:24 -0700 Subject: [PATCH 08/12] 0.9.0.1 banners --- scripts/admin/banners.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/admin/banners.json b/scripts/admin/banners.json index 0764c696c5..541ea4c835 100644 --- a/scripts/admin/banners.json +++ b/scripts/admin/banners.json @@ -1,9 +1,9 @@ { "track": "METEOR", "banners": [ { - "versions": ["0.9.0-rc13", "0.9.0-rc14", "0.9.0-rc20", "0.9.0-rc21", "0.9.0-rc22"], + "versions": ["0.9.0"], "banner": { - "text": "=> Meteor 0.9.0 is now out! Upgrade to it with:\n `meteor update`\n Thanks for helping test the release candidates!" + "text": "=> Meteor 0.9.0.1 is now out, fixing several bugs in 0.9.0.\n\n Meteor 0.9.0.1 is being downloaded in the background. You can update to\n it by running 'meteor update --patch'." } } ] From b0e0ccb5a4f555332a52e51d5f62ccb1ae99794e Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 15:16:49 -0700 Subject: [PATCH 09/12] Bump package versions for 0.9.0.1 --- packages/autoupdate/package.js | 2 +- packages/constraint-solver/package.js | 2 +- packages/http/package.js | 2 +- packages/less/package.js | 2 +- packages/meteor-tool/package.js | 2 +- packages/package-version-parser/package.js | 2 +- packages/spiderable/package.js | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/autoupdate/package.js b/packages/autoupdate/package.js index b7f7c669c9..e6d08934d9 100644 --- a/packages/autoupdate/package.js +++ b/packages/autoupdate/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Update the client when new client code is available", - version: '1.0.5-rc1' + version: '1.0.5' }); Package.on_use(function (api) { diff --git a/packages/constraint-solver/package.js b/packages/constraint-solver/package.js index 6b829feb08..5d3f573b95 100644 --- a/packages/constraint-solver/package.js +++ b/packages/constraint-solver/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Given the set of the constraints, picks a satisfying configuration", - version: "1.0.10-rc1" + version: "1.0.10" }); Npm.depends({ diff --git a/packages/http/package.js b/packages/http/package.js index 0ad597e180..b9306dcd27 100644 --- a/packages/http/package.js +++ b/packages/http/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Make HTTP calls to remote servers", - version: '1.0.3-rc1' + version: '1.0.3' }); Npm.depends({request: "2.33.0"}); diff --git a/packages/less/package.js b/packages/less/package.js index 78b1953f18..07ab1bf474 100644 --- a/packages/less/package.js +++ b/packages/less/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The dynamic stylesheet language", - version: "1.0.6-rc1" + version: "1.0.6" }); Package._transitional_registerBuildPlugin({ diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index be89979f45..3dc57a768a 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.26-rc1' + version: '1.0.26' }); Package.includeTool(); diff --git a/packages/package-version-parser/package.js b/packages/package-version-parser/package.js index 3280537ee1..eba5b57fcc 100644 --- a/packages/package-version-parser/package.js +++ b/packages/package-version-parser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Parses Meteor Smart Package version string", - version: "1.0.6-rc1" + version: "1.0.6" }); Npm.depends({ diff --git a/packages/spiderable/package.js b/packages/spiderable/package.js index 3c8c27fbcf..cbb262399a 100644 --- a/packages/spiderable/package.js +++ b/packages/spiderable/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Makes the application crawlable to web spiders", - version: "1.0.2-rc1" + version: "1.0.2" }); Package.on_use(function (api) { From 526f2149e0f12284c0bf5594a3bbc02e50171cf0 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 15:17:10 -0700 Subject: [PATCH 10/12] Update release manifest for 0.9.0.1 --- scripts/admin/meteor-release-official.json | 122 +-------------------- 1 file changed, 2 insertions(+), 120 deletions(-) diff --git a/scripts/admin/meteor-release-official.json b/scripts/admin/meteor-release-official.json index e50ef3f527..c53290ce2a 100644 --- a/scripts/admin/meteor-release-official.json +++ b/scripts/admin/meteor-release-official.json @@ -1,126 +1,8 @@ { "track": "METEOR", - "version": "0.9.0", + "version": "0.9.0.1", "recommended": false, "official": true, "description": "The official Meteor Distribution", - "patchFrom": ["0.9.0-rc13", "0.9.0-rc14", "0.9.0-rc15", "0.9.0-rc16", - "0.9.0-rc17", "0.9.0-rc18", "0.9.0-rc19", "0.9.0-rc20", - "0.9.0-rc21", "0.9.0-rc22"], - "tool": "meteor-tool@1.0.25", - "packages": { - "accounts-base": "1.0.0", - "accounts-facebook": "1.0.0", - "accounts-github": "1.0.0", - "accounts-google": "1.0.0", - "accounts-meetup": "1.0.0", - "accounts-meteor-developer": "1.0.0", - "accounts-oauth": "1.0.0", - "accounts-password": "1.0.0", - "accounts-twitter": "1.0.0", - "accounts-ui": "1.0.0", - "accounts-ui-unstyled": "1.0.0", - "accounts-weibo": "1.0.0", - "amplify": "1.0.0", - "appcache": "1.0.0", - "application-configuration": "1.0.0", - "audit-argument-checks": "1.0.0", - "autopublish": "1.0.0", - "autoupdate": "1.0.4", - "backbone": "1.0.0", - "binary-heap": "1.0.0", - "blaze": "1.0.3", - "blaze-tools": "1.0.0", - "bootstrap": "1.0.0", - "browser-policy": "1.0.0", - "browser-policy-common": "1.0.0", - "browser-policy-content": "1.0.0", - "browser-policy-framing": "1.0.0", - "callback-hook": "1.0.0", - "check": "1.0.0", - "code-prettify": "1.0.0", - "coffeescript": "1.0.2", - "coffeescript-test-helper": "1.0.0", - "constraint-solver": "1.0.9", - "ctl": "1.0.0", - "ctl-helper": "1.0.2", - "d3": "1.0.0", - "deps": "1.0.1", - "dev-bundle-fetcher": "1.0.0", - "disable-oplog": "1.0.0", - "ejson": "1.0.0", - "email": "1.0.2", - "facebook": "1.0.0", - "facts": "1.0.0", - "follower-livedata": "1.0.0", - "force-ssl": "1.0.0", - "geojson-utils": "1.0.0", - "github": "1.0.0", - "google": "1.0.0", - "handlebars": "1.0.0", - "html-tools": "1.0.0", - "htmljs": "1.0.0", - "http": "1.0.2", - "id-map": "1.0.0", - "insecure": "1.0.0", - "jquery": "1.0.0", - "jquery-history": "1.0.0", - "jquery-layout": "1.0.0", - "jquery-waypoints": "1.0.0", - "js-analyze": "1.0.2", - "js-analyze-tests": "1.0.0", - "json": "1.0.0", - "jsparse": "1.0.0", - "less": "1.0.5", - "livedata": "1.0.7", - "localstorage": "1.0.0", - "logging": "1.0.2", - "meetup": "1.0.1", - "meteor": "1.0.2", - "meteor-developer": "1.0.0", - "meyerweb-reset": "1.0.0", - "minifiers": "1.0.2", - "minimongo": "1.0.1", - "mongo-livedata": "1.0.3", - "oauth": "1.0.0", - "oauth-encryption": "1.0.0", - "oauth1": "1.0.0", - "oauth2": "1.0.0", - "observe-sequence": "1.0.1", - "ordered-dict": "1.0.0", - "package-stats-opt-out": "1.0.0", - "package-version-parser": "1.0.5", - "preserve-inputs": "1.0.0", - "random": "1.0.0", - "reactive-dict": "1.0.0", - "reload": "1.0.0", - "reload-safetybelt": "1.0.0", - "retry": "1.0.0", - "routepolicy": "1.0.0", - "service-configuration": "1.0.0", - "session": "1.0.0", - "sha": "1.0.0", - "showdown": "1.0.0", - "spacebars": "1.0.0", - "spacebars-compiler": "1.0.1", - "spacebars-tests": "1.0.0", - "spiderable": "1.0.1", - "srp": "1.0.0", - "standard-app-packages": "1.0.0", - "star-translate": "1.0.2", - "startup": "1.0.0", - "stylus": "1.0.3", - "templating": "1.0.4", - "test-helpers": "1.0.0", - "test-in-browser": "1.0.3", - "test-in-console": "1.0.0", - "test-server-tests-in-console-once": "1.0.0", - "tinytest": "1.0.0", - "twitter": "1.0.0", - "ui": "1.0.0", - "underscore": "1.0.0", - "underscore-tests": "1.0.0", - "webapp": "1.0.2", - "weibo": "1.0.0" - } + "patchFrom": ["0.9.0"] } From d374e5193a34342cb06c7c962018ec9115257da0 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 15:51:17 -0700 Subject: [PATCH 11/12] Update manifest for 0.9.0.1 --- scripts/admin/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/admin/manifest.json b/scripts/admin/manifest.json index 3217c4e2c1..92d8bbb80f 100644 --- a/scripts/admin/manifest.json +++ b/scripts/admin/manifest.json @@ -1,7 +1,7 @@ { "releases": { "stable": { - "version": "0.9.0", + "version": "0.9.0.1", "banner": "=> Meteor 0.9.0: Introducing the official Meteor package system,\n including Isobuild and the Meteor Package Server!\n\n Starting in 0.9.0, you can publish your own packages and use any of\n the over 1800 community packages in your app, without needing an\n external tool such as Meteorite. Just use commands like 'meteor add\n ', 'meteor publish', and 'meteor search '.\n\n This release is being downloaded in the background. It's a big\n change! Once it's done downloading, then the next time you run\n 'meteor', your Meteor install will be automatically upgraded to the\n new system. The upgrade will take a few minutes and as part of it\n old versions of Meteor will be removed from your machine. These old\n versions will be automatically redownloaded using the new system if\n you work on apps that use them.\n" } } From 8e6b2faeca79ef84dbc0edc1a2fec5eb0f29b3b5 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 27 Aug 2014 15:52:21 -0700 Subject: [PATCH 12/12] Update docs and examples to 0.9.0.1 --- docs/.meteor/release | 2 +- docs/.meteor/versions | 6 +++--- docs/client/docs.js | 2 +- examples/clock/.meteor/release | 2 +- examples/clock/.meteor/versions | 2 +- examples/leaderboard/.meteor/release | 2 +- examples/leaderboard/.meteor/versions | 2 +- examples/parties/.meteor/release | 2 +- examples/parties/.meteor/versions | 6 +++--- examples/todos/.meteor/release | 2 +- examples/todos/.meteor/versions | 4 ++-- examples/wordplay/.meteor/release | 2 +- examples/wordplay/.meteor/versions | 2 +- 13 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/.meteor/release b/docs/.meteor/release index 2287c76a12..cbef8b3e4d 100644 --- a/docs/.meteor/release +++ b/docs/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0.1-rc1 +METEOR@0.9.0.1 diff --git a/docs/.meteor/versions b/docs/.meteor/versions index 6cf10199d1..85939106f9 100644 --- a/docs/.meteor/versions +++ b/docs/.meteor/versions @@ -1,6 +1,6 @@ appcache@1.0.0 application-configuration@1.0.0 -autoupdate@1.0.5-rc1 +autoupdate@1.0.5 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 @@ -20,7 +20,7 @@ id-map@1.0.0 jquery-waypoints@1.0.0 jquery@1.0.0 json@1.0.0 -less@1.0.6-rc1 +less@1.0.6 livedata@1.0.7 logging@1.0.2 meteor@1.0.2 @@ -39,7 +39,7 @@ session@1.0.0 showdown@1.0.0 spacebars-compiler@1.0.1 spacebars@1.0.0 -spiderable@1.0.2-rc1 +spiderable@1.0.2 standard-app-packages@1.0.0 templating@1.0.4 ui@1.0.0 diff --git a/docs/client/docs.js b/docs/client/docs.js index bb8faa5e75..17dfc8bf27 100644 --- a/docs/client/docs.js +++ b/docs/client/docs.js @@ -1,5 +1,5 @@ Template.headline.release = function () { - return Meteor.release ? "0.9.0" : "(checkout)"; + return Meteor.release ? "0.9.0.1" : "(checkout)"; }; diff --git a/examples/clock/.meteor/release b/examples/clock/.meteor/release index 2287c76a12..cbef8b3e4d 100644 --- a/examples/clock/.meteor/release +++ b/examples/clock/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0.1-rc1 +METEOR@0.9.0.1 diff --git a/examples/clock/.meteor/versions b/examples/clock/.meteor/versions index 4e6cf5a07f..e2a2bd0fb5 100644 --- a/examples/clock/.meteor/versions +++ b/examples/clock/.meteor/versions @@ -1,6 +1,6 @@ application-configuration@1.0.0 autopublish@1.0.0 -autoupdate@1.0.5-rc1 +autoupdate@1.0.5 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 diff --git a/examples/leaderboard/.meteor/release b/examples/leaderboard/.meteor/release index 2287c76a12..cbef8b3e4d 100644 --- a/examples/leaderboard/.meteor/release +++ b/examples/leaderboard/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0.1-rc1 +METEOR@0.9.0.1 diff --git a/examples/leaderboard/.meteor/versions b/examples/leaderboard/.meteor/versions index 4e6cf5a07f..e2a2bd0fb5 100644 --- a/examples/leaderboard/.meteor/versions +++ b/examples/leaderboard/.meteor/versions @@ -1,6 +1,6 @@ application-configuration@1.0.0 autopublish@1.0.0 -autoupdate@1.0.5-rc1 +autoupdate@1.0.5 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 diff --git a/examples/parties/.meteor/release b/examples/parties/.meteor/release index 2287c76a12..cbef8b3e4d 100644 --- a/examples/parties/.meteor/release +++ b/examples/parties/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0.1-rc1 +METEOR@0.9.0.1 diff --git a/examples/parties/.meteor/versions b/examples/parties/.meteor/versions index 15970e5920..53c3c5ce29 100644 --- a/examples/parties/.meteor/versions +++ b/examples/parties/.meteor/versions @@ -7,7 +7,7 @@ accounts-ui-unstyled@1.0.0 accounts-ui@1.0.0 application-configuration@1.0.0 audit-argument-checks@1.0.0 -autoupdate@1.0.5-rc1 +autoupdate@1.0.5 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3 @@ -25,11 +25,11 @@ follower-livedata@1.0.0 geojson-utils@1.0.0 html-tools@1.0.0 htmljs@1.0.0 -http@1.0.3-rc1 +http@1.0.3 id-map@1.0.0 jquery@1.0.0 json@1.0.0 -less@1.0.6-rc1 +less@1.0.6 livedata@1.0.7 localstorage@1.0.0 logging@1.0.2 diff --git a/examples/todos/.meteor/release b/examples/todos/.meteor/release index 2287c76a12..cbef8b3e4d 100644 --- a/examples/todos/.meteor/release +++ b/examples/todos/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0.1-rc1 +METEOR@0.9.0.1 diff --git a/examples/todos/.meteor/versions b/examples/todos/.meteor/versions index b2b2581681..513b8ddbf4 100644 --- a/examples/todos/.meteor/versions +++ b/examples/todos/.meteor/versions @@ -1,5 +1,5 @@ application-configuration@1.0.0 -autoupdate@1.0.5-rc1 +autoupdate@1.0.5 backbone@1.0.0 binary-heap@1.0.0 blaze-tools@1.0.0 @@ -34,7 +34,7 @@ routepolicy@1.0.0 session@1.0.0 spacebars-compiler@1.0.1 spacebars@1.0.0 -spiderable@1.0.2-rc1 +spiderable@1.0.2 standard-app-packages@1.0.0 templating@1.0.4 ui@1.0.0 diff --git a/examples/wordplay/.meteor/release b/examples/wordplay/.meteor/release index 2287c76a12..cbef8b3e4d 100644 --- a/examples/wordplay/.meteor/release +++ b/examples/wordplay/.meteor/release @@ -1 +1 @@ -METEOR@0.9.0.1-rc1 +METEOR@0.9.0.1 diff --git a/examples/wordplay/.meteor/versions b/examples/wordplay/.meteor/versions index 0413a31668..44e5ba94dd 100644 --- a/examples/wordplay/.meteor/versions +++ b/examples/wordplay/.meteor/versions @@ -1,5 +1,5 @@ application-configuration@1.0.0 -autoupdate@1.0.5-rc1 +autoupdate@1.0.5 binary-heap@1.0.0 blaze-tools@1.0.0 blaze@1.0.3