phetsims / query-string-machine

Query String Machine is a query string parser that supports type coercion, default values & validation. No dependencies.
MIT License
3 stars 3 forks source link

Maintenance release to fix the localStorage problem #34

Closed samreid closed 5 years ago

samreid commented 5 years ago

From https://github.com/phetsims/phet-android-app/issues/71, @ariel-phet requested that we publish maintenance releases for sims that use localStorage without try/catch.

Some notes from slack:

Ariel Paul [1:54 PM]
@samreid @chrisklus can we do an MR for Blackbody ASAP to fix the not loading on android issue?

Chris Klusendorf [1:56 PM]
you bet!
we have website in 3 minutes though

Ariel Paul [1:57 PM]
Yes
That is OK, after would be fine

Sam Reid [2:22 PM]
Do we know if other sims are affected by the problem?  I think it would be SHAs taken from master between March 7 and June 21.

Jesse Greenberg [2:31 PM]
Oh I see, then I would guess ohms-law has this problem at least
Confirmed, ohms-law isn't opening in the app

Sam Reid [2:50 PM]
Thanks @jessegreenberg, I copied your comment to https://github.com/phetsims/phet-android-app/issues/71#issuecomment-511980521
samreid commented 5 years ago

In query-string-machine, we identified the buggy sha 570fe1febbd045d44b9d6d88433a7f8a9d84a1d6

and the fixed sha 1f64976a20ac1cf35c91c560f5e33df474eceec5

Therefore we used grunt maintenance to run the following:

Maintenance.reset()
Maintenance.createPatch( 'query-string-machine', 'https://github.com/phetsims/query-string-machine/issues/34' )
Maintenance.addNeededPatchesAfter( 'query-string-machine', '570fe1febbd045d44b9d6d88433a7f8a9d84a1d6' )
Maintenance.removeNeededPatchesAfter( 'query-string-machine', '1f64976a20ac1cf35c91c560f5e33df474eceec5' )
Maintenance.list()

The result is:

maintenance> Maintenance.list()
area-model-algebra 1.2 phet (unreleased)
  needs: query-string-machine
area-model-decimals 1.2 phet (unreleased)
  needs: query-string-machine
area-model-introduction 1.2 phet (unreleased)
  needs: query-string-machine
area-model-multiplication 1.2 phet (unreleased)
  needs: query-string-machine
blackbody-spectrum 1.0 phet
  needs: query-string-machine
capacitor-lab-basics 1.7 phet,phet-io (unreleased)
  needs: query-string-machine
circuit-construction-kit-dc-virtual-lab 1.1 phet (unreleased)
  needs: query-string-machine
energy-forms-and-changes 1.1 phet (unreleased)
  needs: query-string-machine
fraction-matcher 1.2 phet (unreleased)
  needs: query-string-machine
fractions-equality 1.1 phet (unreleased)
  needs: query-string-machine
isotopes-and-atomic-mass 1.1 phet
  needs: query-string-machine
ohms-law 1.4 phet
  needs: query-string-machine
ph-scale 1.3 phet (unreleased)
  needs: query-string-machine
ph-scale-basics 1.3 phet (unreleased)
  needs: query-string-machine
phet-io-test-sim 1.1 phet-io
  needs: query-string-machine
[query-string-machine] https://github.com/phetsims/query-string-machine/issues/34
    area-model-algebra 1.2 phet
    area-model-decimals 1.2 phet
    area-model-introduction 1.2 phet
    area-model-multiplication 1.2 phet
    blackbody-spectrum 1.0 phet
    capacitor-lab-basics 1.7 phet,phet-io
    circuit-construction-kit-dc-virtual-lab 1.1 phet
    energy-forms-and-changes 1.1 phet
    fraction-matcher 1.2 phet
    fractions-equality 1.1 phet
    isotopes-and-atomic-mass 1.1 phet
    ohms-law 1.4 phet
    ph-scale 1.3 phet
    ph-scale-basics 1.3 phet
    phet-io-test-sim 1.1 phet-io

Summarizing, the published sims with this flaw (according to this process) are:

blackbody-spectrum 1.0 phet isotopes-and-atomic-mass 1.1 phet ohms-law 1.4 phet phet-io-test-sim 1.1 phet-io

It would be possible to do a maintenance release just for these 4 simulations, and that would fix the Android app. However, the other (unreleased) simulations should get this fix too so that when they are published they will have the fix. Therefore @chrisklus and I recommend to run the full maintenance release process for this set.

samreid commented 5 years ago

From Slack:

Sam Reid [9:35 PM]
@chrisklus and I are starting a maintenance release process to address https://github.com/phetsims/query-string-machine/issues/34.  Please do not make changes to any release branch until we give the go-ahead.

Chris Malley [9:36 PM]
Will that include unpublished release branches?

Sam Reid [9:39 PM]
In https://github.com/phetsims/query-string-machine/issues/34#issuecomment-512087941 we identified 4 published release branches with the symptom and 11 (unreleased) release branches.  We thought it would be best to patch them all. (edited) 
Do you concur?

Chris Malley [9:40 PM]
I’m not familiar with the issue.  I was wondering mainly about pH Scale and pH Scale: Basics, which are both in the RC test phase on unpublished release branches.
Looks like they are in your list.

Sam Reid [9:43 PM]
So will this process publish new RCs?

Chris Malley [9:53 PM]
I would think that you don’t want to publish RCs for unpublished release branches.  I’d prefer not for pH Scale & pH Scale: Basics, because there is still work to be done before the next RC.   If you have to publish, I’ll just skip the version that you publish, and live with the discontinuity in RC version numbering. (edited) 

Sam Reid [10:00 PM]
I’m not understanding the problem.  ph-scale 1.3 branch will still need the fix.  Are you requesting us to skip it so you can do it yourself later?
Or are you saying you want all of the problems identified in ph-scale 1.3.0-rc.1 to be fixed in ph-scale 1.3.0-rc.2 (including this problem)?

Sam Reid [10:08 PM]
After discussion, @chrisklus and I agreed we should go forward with patching this for as many branches as we can.  We will manually remove ph-scale and ph-scale-basics so that @pixelzoom may apply the patch as part of his release candidate process.
samreid commented 5 years ago

@chrisklus and I manually removed entries from .maintenance.json for:

samreid commented 5 years ago

Here is the result of Maintenance.listLinks()

Release Candidate links

blackbody-spectrum 1.0 (https://github.com/phetsims/query-string-machine/issues/34)

isotopes-and-atomic-mass 1.1 (https://github.com/phetsims/query-string-machine/issues/34)

ohms-law 1.4 (https://github.com/phetsims/query-string-machine/issues/34)

samreid commented 5 years ago

Testing https://phet-dev.colorado.edu/html/blackbody-spectrum/1.0.1-rc.3/phet/blackbody-spectrum_en_phet.html, everything seems OK, but when we did a text diff between it and 1.0.0, there are numerous changes that we do not understand.

~/Desktop$ diff blackbody-spectrum_all_debug_PUB.html blackbody-spectrum_all_phet_debug-RC3.html

```diff 20c20 < ‪Blackbody Spectrum‬ 1.0.0 --- > ‪Blackbody Spectrum‬ 1.0.1-rc.3 49,50c49,50 < window.phet.chipper.version = '1.0.0'; < window.phet.chipper.buildTimestamp = '2019-07-16 07:32:36 UTC'; --- > window.phet.chipper.version = '1.0.1-rc.3'; > window.phet.chipper.buildTimestamp = '2019-07-17 04:56:45 UTC'; 783c783 < "comment": "# blackbody-spectrum 1.0.0 Tue Jul 16 2019 01:33:04 GMT-0600 (MDT)", --- > "comment": "# blackbody-spectrum 1.0.1-rc.3 Tue Jul 16 2019 22:57:15 GMT-0600 (MDT)", 793c793 < "sha": "62f4d6d6cd347fed1bccb25464db1698ca8274bf", --- > "sha": "bf45517d64e22a70f2c75d9134fe0ed2dcfbc5fe", 829c829 < "sha": "ea3bd75fec8a3ba5afe2f6df23cf4be18d767cec", --- > "sha": "27a275c8b0c804f7faa130deafef6befbec9c7d7", 837c837 < "sha": "755592892145ca03f7fbd8a8d4d846d904fd606a", --- > "sha": "324fae3f2437ca846434f80aa57eb39644698a56", 29659c29659,29666 < return localStorage.getItem( 'phetTeamMember' ) === 'true'; --- > // Trying to access localStorage may fail with a SecurityError if cookies are blocked in a certain way. > // See https://github.com/phetsims/qa/issues/329 for more information. > try { > return localStorage.getItem( 'phetTeamMember' ) === 'true'; > } > catch ( e ) { > return false; > } 31141,31178c31148,31192 < // {boolean} - Whether an error was detected with anything relating to google analytics. < // See https://github.com/phetsims/yotta/issues/30 < var googleAnalyticsErrored = false; < window.addEventListener( 'error', function( event ) { < if ( event && < event.target && < event.target.src && < event.target.src.indexOf && < event.target.src.indexOf( 'google-analytics' ) >= 0 ) { < googleAnalyticsErrored = true; < } < }, true ); < < // {boolean} - Whether analytics.js successfully loaded, see https://github.com/phetsims/yotta/issues/30 < var googleAnalyticsLoaded = false; < function onGoogleAnalyticsLoad() { < googleAnalyticsLoaded = true; < } < < var pingParams = 'pingver=3&' + < 'project=' + encodeURIComponent( phet.chipper.project ) + '&' + < 'brand=' + encodeURIComponent( phet.chipper.brand ) + '&' + < 'version=' + encodeURIComponent( phet.chipper.version ) + '&' + < 'locale=' + encodeURIComponent( phet.chipper.locale ) + '&' + < 'buildTimestamp=' + encodeURIComponent( phet.chipper.buildTimestamp ) + '&' + < 'domain=' + encodeURIComponent( document.domain ) + '&' + < 'href=' + encodeURIComponent( window.location.href ) + '&' + < 'type=html&' + < 'timestamp=' + encodeURIComponent( Date.now() ) + '&' + < 'loadType=' + encodeURIComponent( loadType ) + '&' + < 'ref=' + encodeURIComponent( document.referrer ); < < function pingURL( url ) { < var img = document.createElement( 'img' ); < img.src = url; < } < < pingURL( 'https://phet.colorado.edu/yotta/immediate.gif?' + pingParams ); --- > function sendMessages() { > // {boolean} - Whether an error was detected with anything relating to google analytics. > // See https://github.com/phetsims/yotta/issues/30 > var googleAnalyticsErrored = false; > window.addEventListener( 'error', function( event ) { > if ( event && > event.target && > event.target.src && > event.target.src.indexOf && > event.target.src.indexOf( 'google-analytics' ) >= 0 ) { > googleAnalyticsErrored = true; > } > }, true ); > > // {boolean} - Whether analytics.js successfully loaded, see https://github.com/phetsims/yotta/issues/30 > var googleAnalyticsLoaded = false; > function onGoogleAnalyticsLoad() { > googleAnalyticsLoaded = true; > } > > var pingParams = 'pingver=3&' + > 'project=' + encodeURIComponent( phet.chipper.project ) + '&' + > 'brand=' + encodeURIComponent( phet.chipper.brand ) + '&' + > 'version=' + encodeURIComponent( phet.chipper.version ) + '&' + > 'locale=' + encodeURIComponent( phet.chipper.locale ) + '&' + > 'buildTimestamp=' + encodeURIComponent( phet.chipper.buildTimestamp ) + '&' + > 'domain=' + encodeURIComponent( document.domain ) + '&' + > 'href=' + encodeURIComponent( window.location.href ) + '&' + > 'type=html&' + > 'timestamp=' + encodeURIComponent( Date.now() ) + '&' + > 'loadType=' + encodeURIComponent( loadType ) + '&' + > 'ref=' + encodeURIComponent( document.referrer ); > > function pingURL( url ) { > var img = document.createElement( 'img' ); > img.src = url; > } > > pingURL( 'https://phet.colorado.edu/yotta/immediate.gif?' + pingParams ); > > window.addEventListener( 'load', function( event ) { > pingURL( 'https://phet.colorado.edu/yotta/sanity.gif?' + pingParams + '&' + > 'gaError=' + encodeURIComponent( googleAnalyticsErrored ) + '&' + > 'gaLoaded=' + encodeURIComponent( googleAnalyticsLoaded ) ); > }, false ); 31180,31203c31194,31233 < window.addEventListener( 'load', function( event ) { < pingURL( 'https://phet.colorado.edu/yotta/sanity.gif?' + pingParams + '&' + < 'gaError=' + encodeURIComponent( googleAnalyticsErrored ) + '&' + < 'gaLoaded=' + encodeURIComponent( googleAnalyticsLoaded ) ); < }, false ); < < // Google Analytics snippet for loading the API < (function( i, s, o, g, r, a, m ) { < i.GoogleAnalyticsObject = r; < i[ r ] = i[ r ] || function() { < (i[ r ].q = i[ r ].q || []).push( arguments ); < }, i[ r ].l = 1 * new Date(); < a = s.createElement( o ), m = s.getElementsByTagName( o )[ 0 ]; < a.async = 1; < a.src = g; < m.parentNode.insertBefore( a, m ); < })( window, document, 'script', ( 'https:' === document.location.protocol ? 'https:' : 'http:' ) + '//www.google-analytics.com/analytics.js', 'googleAnalytics' ); < < // Applies custom dimensions that are common for our main, third-party, and phet-io tracker < var phetPageviewOptions = {}; < if ( phet.chipper ) { < assert && assert( !phet.chipper.buildTimestamp || < ( !!phet.chipper.project && !!phet.chipper.version && !!phet.chipper.locale ), < 'Missing Google Analytics variable in' ); --- > // Google Analytics snippet for loading the API > (function( i, s, o, g, r, a, m ) { > i.GoogleAnalyticsObject = r; > i[ r ] = i[ r ] || function() { > (i[ r ].q = i[ r ].q || []).push( arguments ); > }, i[ r ].l = 1 * new Date(); > a = s.createElement( o ), m = s.getElementsByTagName( o )[ 0 ]; > a.async = 1; > a.src = g; > m.parentNode.insertBefore( a, m ); > })( window, document, 'script', ( 'https:' === document.location.protocol ? 'https:' : 'http:' ) + '//www.google-analytics.com/analytics.js', 'googleAnalytics' ); > > // Applies custom dimensions that are common for our main, third-party, and phet-io tracker > var phetPageviewOptions = {}; > if ( phet.chipper ) { > assert && assert( !phet.chipper.buildTimestamp || > ( !!phet.chipper.project && !!phet.chipper.version && !!phet.chipper.locale ), > 'Missing Google Analytics variable in' ); > > if ( phet.chipper.project ) { > phetPageviewOptions.dimension1 = phet.chipper.project; // simName custom dimension > } > if ( phet.chipper.version ) { > phetPageviewOptions.dimension2 = phet.chipper.version; // simVersion custom dimension > } > if ( phet.chipper.locale ) { > phetPageviewOptions.dimension3 = phet.chipper.locale; // simLocale custom dimension > } > if ( phet.chipper.buildTimestamp ) { > phetPageviewOptions.dimension4 = phet.chipper.buildTimestamp; // simBuildTimestamp custom dimension > } > phetPageviewOptions.dimension5 = loadType; > phetPageviewOptions.dimension6 = document.referrer; > } > > var offlineSimLocation = 'offline/html/' + phet.chipper.project + '_' + phet.chipper.locale; > > // Put our function in the queue, to be invoked when the analytics.js has fully loaded. > // See https://github.com/phetsims/yotta/issues/30 > window.googleAnalytics( onGoogleAnalyticsLoad ); 31205,31215c31235,31243 < if ( phet.chipper.project ) { < phetPageviewOptions.dimension1 = phet.chipper.project; // simName custom dimension < } < if ( phet.chipper.version ) { < phetPageviewOptions.dimension2 = phet.chipper.version; // simVersion custom dimension < } < if ( phet.chipper.locale ) { < phetPageviewOptions.dimension3 = phet.chipper.locale; // simLocale custom dimension < } < if ( phet.chipper.buildTimestamp ) { < phetPageviewOptions.dimension4 = phet.chipper.buildTimestamp; // simBuildTimestamp custom dimension --- > // Main PhET tracker > window.googleAnalytics( 'create', { > trackingId: 'UA-5033201-1', > cookieDomain: 'none' > } ); > if ( window.location.protocol === 'file:' ) { > window.googleAnalytics( 'set', 'checkProtocolTask', null ); > window.googleAnalytics( 'set', 'checkStorageTask', null ); > window.googleAnalytics( 'set', 'location', offlineSimLocation ); 31217,31221c31245 < phetPageviewOptions.dimension5 = loadType; < phetPageviewOptions.dimension6 = document.referrer; < } < < var offlineSimLocation = 'offline/html/' + phet.chipper.project + '_' + phet.chipper.locale; --- > window.googleAnalytics( 'send', 'pageview', phetPageviewOptions ); 31223,31225c31247,31260 < // Put our function in the queue, to be invoked when the analytics.js has fully loaded. < // See https://github.com/phetsims/yotta/issues/30 < window.googleAnalytics( onGoogleAnalyticsLoad ); --- > // PhET iO tracker (see https://github.com/phetsims/phetcommon/issues/26) > if ( phet.chipper.brand === 'phet-io' ) { > window.googleAnalytics( 'create', { > trackingId: 'UA-37615182-3', > cookieDomain: 'none', > name: 'io' > } ); > if ( window.location.protocol === 'file:' ) { > window.googleAnalytics( 'io.set', 'checkProtocolTask', null ); > window.googleAnalytics( 'io.set', 'checkStorageTask', null ); > window.googleAnalytics( 'io.set', 'location', offlineSimLocation ); > } > window.googleAnalytics( 'io.send', 'pageview', phetPageviewOptions ); > } 31227,31237c31262,31271 < // Main PhET tracker < window.googleAnalytics( 'create', { < trackingId: 'UA-5033201-1', < cookieDomain: 'none' < } ); < if ( window.location.protocol === 'file:' ) { < window.googleAnalytics( 'set', 'checkProtocolTask', null ); < window.googleAnalytics( 'set', 'checkStorageTask', null ); < window.googleAnalytics( 'set', 'location', offlineSimLocation ); < } < window.googleAnalytics( 'send', 'pageview', phetPageviewOptions ); --- > // Third-party PhET tracker (excludes non-third-party usage, see https://github.com/phetsims/yotta/issues/12) > if ( window.location.protocol !== 'file:' && > !document.domain.match( /(.*\.colorado\.edu\.?$)|(^localhost$)|(^127\.0\.0\.1$)/ ) ) { > window.googleAnalytics( 'create', { > trackingId: 'UA-37615182-2', > cookieDomain: 'none', > name: 'thirdParty' > } ); > window.googleAnalytics( 'thirdParty.send', 'pageview', phetPageviewOptions ); > } 31239,31240c31273 < // PhET iO tracker (see https://github.com/phetsims/phetcommon/issues/26) < if ( phet.chipper.brand === 'phet-io' ) { --- > // Hewlett tracker 31242,31244c31275,31277 < trackingId: 'UA-37615182-3', < cookieDomain: 'none', < name: 'io' --- > trackingId: 'UA-5033010-35', > cookieDomain: 'phet.colorado.edu', > name: 'hewlett' 31246,31249c31279,31288 < if ( window.location.protocol === 'file:' ) { < window.googleAnalytics( 'io.set', 'checkProtocolTask', null ); < window.googleAnalytics( 'io.set', 'checkStorageTask', null ); < window.googleAnalytics( 'io.set', 'location', offlineSimLocation ); --- > window.googleAnalytics( 'hewlett.send', 'pageview' ); > > // External tracker > if ( phet.chipper.queryParameters.ga ) { > window.googleAnalytics( 'create', { > trackingId: phet.chipper.queryParameters.ga, > cookieDomain: 'none', // don't require the tracking from our site > name: 'external' > } ); > window.googleAnalytics( 'external.send', 'pageview', phet.chipper.queryParameters.gaPage || undefined ); 31251d31289 < window.googleAnalytics( 'io.send', 'pageview', phetPageviewOptions ); 31254,31262c31292,31295 < // Third-party PhET tracker (excludes non-third-party usage, see https://github.com/phetsims/yotta/issues/12) < if ( window.location.protocol !== 'file:' && < !document.domain.match( /(.*\.colorado\.edu\.?$)|(^localhost$)|(^127\.0\.0\.1$)/ ) ) { < window.googleAnalytics( 'create', { < trackingId: 'UA-37615182-2', < cookieDomain: 'none', < name: 'thirdParty' < } ); < window.googleAnalytics( 'thirdParty.send', 'pageview', phetPageviewOptions ); --- > if ( loadType === 'phet-app' ) { > window.addEventListener( 'load', function() { > setTimeout( sendMessages, 0 ); > }, false ); 31264,31280c31297,31298 < < // Hewlett tracker < window.googleAnalytics( 'create', { < trackingId: 'UA-5033010-35', < cookieDomain: 'phet.colorado.edu', < name: 'hewlett' < } ); < window.googleAnalytics( 'hewlett.send', 'pageview' ); < < // External tracker < if ( phet.chipper.queryParameters.ga ) { < window.googleAnalytics( 'create', { < trackingId: phet.chipper.queryParameters.ga, < cookieDomain: 'none', // don't require the tracking from our site < name: 'external' < } ); < window.googleAnalytics( 'external.send', 'pageview', phet.chipper.queryParameters.gaPage || undefined ); --- > else { > sendMessages(); 35141c35159 < define('text!REPOSITORY/package.json',[],function () { return '{\n "name": "blackbody-spectrum",\n "version": "1.0.0",\n "license": "GPL-3.0",\n "repository": {\n "type": "git",\n "url": "https://github.com/phetsims/blackbody-spectrum.git"\n },\n "devDependencies": {\n "grunt": "~1.0.0"\n },\n "phet": {\n "automatedTestEnabled": true,\n "requirejsNamespace": "BLACKBODY_SPECTRUM",\n "runnable": true,\n "simulation": true,\n "supportedBrands": [\n "phet",\n "adapted-from-phet",\n "phet-io"\n ]\n },\n "eslintConfig": {\n "extends": "../chipper/eslint/sim_eslintrc.js"\n }\n}';}); --- > define('text!REPOSITORY/package.json',[],function () { return '{\n "name": "blackbody-spectrum",\n "version": "1.0.1-rc.3",\n "license": "GPL-3.0",\n "repository": {\n "type": "git",\n "url": "https://github.com/phetsims/blackbody-spectrum.git"\n },\n "devDependencies": {\n "grunt": "~1.0.0"\n },\n "phet": {\n "automatedTestEnabled": true,\n "requirejsNamespace": "BLACKBODY_SPECTRUM",\n "runnable": true,\n "simulation": true,\n "supportedBrands": [\n "phet",\n "adapted-from-phet",\n "phet-io"\n ]\n },\n "eslintConfig": {\n "extends": "../chipper/eslint/sim_eslintrc.js"\n }\n}';}); 101926c101944 < const BUTTON_ICON_WIDTH = 60; --- > const BUTTON_ICON_WIDTH = 50; 101953d101970 < minWidth: CHECKBOX_DEFAULT_WIDTH, 102053,102054c102070 < align: 'center', < spacing: CHECKBOX_DEFAULT_WIDTH - ( BUTTON_ICON_WIDTH ) * 2 --- > spacing: spacing 102063,102064c102079,102086 < spacing: spacing, < resize: false --- > spacing: spacing > } ); > > // Create panel to allow left alignment on checkboxes while keeping center alignment for buttons > const checkboxPanel = new Panel( checkboxes, { > fill: blackbodyColorProfile.backgroundProperty, > stroke: blackbodyColorProfile.backgroundProperty, > minWidth: CHECKBOX_DEFAULT_WIDTH 102075c102097 < checkboxes, --- > checkboxPanel, 102080c102102 < align: 'left', --- > align: 'center', 102092c102114 < checkboxes, --- > checkboxPanel, 102099c102121 < checkboxes, --- > checkboxPanel, 107308a107331 > minWidth: 140, 107369a107393 > minWidth: options.minWidth, ```

We'll check the others to see if there's a similar pattern.

UPDATE: We noted there were many changes in an RC that hadn't been published yet. Here is the RC issue that indicates no problems: https://github.com/phetsims/QA/issues/362. There was one commit after that, which we tested that is a good commit (constrains width of one panel to match another). So we are confident this can be published.

samreid commented 5 years ago

We tested isotopes and atomic mass and it seemed good. The diff indicated expected changes:

```diff 20c20 < ‪Isotopes and Atomic Mass‬ 1.1.2 --- > ‪Isotopes and Atomic Mass‬ 1.1.3-rc.1 49,50c49,50 < window.phet.chipper.version = '1.1.2'; < window.phet.chipper.buildTimestamp = '2019-07-10 22:37:26 UTC'; --- > window.phet.chipper.version = '1.1.3-rc.1'; > window.phet.chipper.buildTimestamp = '2019-07-17 04:58:00 UTC'; 807c807 < "comment": "# isotopes-and-atomic-mass 1.1.2 Wed Jul 10 2019 16:37:55 GMT-0600 (MDT)", --- > "comment": "# isotopes-and-atomic-mass 1.1.3-rc.1 Tue Jul 16 2019 22:58:31 GMT-0600 (MDT)", 829c829 < "sha": "cfd65777c1e1f614fd71cccf47b1935f01158767", --- > "sha": "db7ab30c5f6c9cdc7bde96f47d0dca5c31a11fc0", 861c861 < "sha": "f20a2b06972ed330c2cd5a7c3f2321935718ee92", --- > "sha": "d100eb241d0c7a959823b669149f4a6a33630fda", 3886,3888c3886,3888 < "JOIST/termsPrivacyAndLicensing": "‪Baldintzak, pribatutasuna eta lizentzia‬", < "JOIST/translation.credits.link": "‪Itzulpen-kredituak‬", < "JOIST/thirdParty.credits.link": "‪Hirugarrenen kredituak‬", --- > "JOIST/termsPrivacyAndLicensing": "‪Baldintzak, Pribatutasuna eta Lizentzia‬", > "JOIST/translation.credits.link": "‪Itzulpen kreditoak‬", > "JOIST/thirdParty.credits.link": "‪Hirugarrenen kreditoak‬", 3901c3901 < "JOIST/credits.graphicArts": "‪Arte grafikoak: {0}‬", --- > "JOIST/credits.graphicArts": "‪Arte grafikoak {0}‬", 3903c3903 < "JOIST/credits.qualityAssurance": "‪Kalitate-bermea: {0}‬", --- > "JOIST/credits.qualityAssurance": "‪Kalitate aseguroa: {0}‬", 3908c3908 < "JOIST/credits.title": "‪Kredituak‬", --- > "JOIST/credits.title": "‪Kreditoak‬", 3911,3912c3911,3912 < "JOIST/updates.getUpdate": "‪Lortu eguneraketa...‬", < "JOIST/updates.newVersionAvailable": "‪Bertsio berria eskuragarri: {0}.‬", --- > "JOIST/updates.getUpdate": "‪Eguneraketa lortu...‬", > "JOIST/updates.newVersionAvailable": "‪Bertsio berri bat eskuragarri: {0}.‬", 3914c3914 < "JOIST/updates.offline": "‪Ezin dira egiaztatu eguneraketak.‬", --- > "JOIST/updates.offline": "‪Ezin dira baieztatu eguneraketak.‬", 3917,3918c3917,3918 < "JOIST/updates.yourCurrentVersion": "‪Zure bertsioa hau da: {0}‬", < "JOIST/versionPattern": "‪bertsioa: {0}‬", --- > "JOIST/updates.yourCurrentVersion": "‪Zure bertsioa  {0} duzu.‬", > "JOIST/versionPattern": "‪Bertsioa {0}‬", 3924c3924 < "JOIST/menuItem.mailInputEventsLog": "‪Posta-sarreren erregistroa‬", --- > "JOIST/menuItem.mailInputEventsLog": "‪Korreo-sarreren erregistroa‬", 3926,3930c3926,3930 < "JOIST/menuItem.outputInputEventsLog": "‪Irteera-sarreren erregistroa‬", < "JOIST/menuItem.phetWebsite": "‪PhET webgunea‬", < "JOIST/menuItem.reportAProblem": "‪Arazoaren berri eman...‬", < "JOIST/menuItem.screenshot": "‪Pantaila-argazkia‬", < "JOIST/menuItem.submitInputEventsLog": "‪Bidali sarrera-erregistroak‬", --- > "JOIST/menuItem.outputInputEventsLog": "‪Irteera sarreren erregistroa‬", > "JOIST/menuItem.phetWebsite": "‪PHET Web gunea‬", > "JOIST/menuItem.reportAProblem": "‪Arazoren berri eman...‬", > "JOIST/menuItem.screenshot": "‪Pantailaren kopia‬", > "JOIST/menuItem.submitInputEventsLog": "‪Sarrera erregistroak bidali‬", 4121c4121 < "JOIST/simTitleWithScreenNamePattern": "‪{{simName}} — {{screenName}}‬", --- > "JOIST/simTitleWithScreenNamePattern": "‫{{screenName}} — {{simName}}‬", 37465c37465,37472 < return localStorage.getItem( 'phetTeamMember' ) === 'true'; --- > // Trying to access localStorage may fail with a SecurityError if cookies are blocked in a certain way. > // See https://github.com/phetsims/qa/issues/329 for more information. > try { > return localStorage.getItem( 'phetTeamMember' ) === 'true'; > } > catch ( e ) { > return false; > } 54497c54504 < define('text!REPOSITORY/package.json',[],function () { return '{\n "name": "isotopes-and-atomic-mass",\n "version": "1.1.2",\n "license": "GPL-3.0",\n "repository": {\n "type": "git",\n "url": "https://github.com/phetsims/isotopes-and-atomic-mass.git"\n },\n "devDependencies": {\n "grunt": "~1.0.0"\n },\n "phet": {\n "requirejsNamespace": "ISOTOPES_AND_ATOMIC_MASS",\n "phetLibs": [\n "shred"\n ],\n "runnable": true,\n "supportedBrands": [\n "phet",\n "adapted-from-phet"\n ],\n "simulation": true\n },\n "eslintConfig": {\n "extends": "../chipper/eslint/sim_eslintrc.js"\n }\n}';}); --- > define('text!REPOSITORY/package.json',[],function () { return '{\n "name": "isotopes-and-atomic-mass",\n "version": "1.1.3-rc.1",\n "license": "GPL-3.0",\n "repository": {\n "type": "git",\n "url": "https://github.com/phetsims/isotopes-and-atomic-mass.git"\n },\n "devDependencies": {\n "grunt": "~1.0.0"\n },\n "phet": {\n "requirejsNamespace": "ISOTOPES_AND_ATOMIC_MASS",\n "phetLibs": [\n "shred"\n ],\n "runnable": true,\n "supportedBrands": [\n "phet",\n "adapted-from-phet"\n ],\n "simulation": true\n },\n "eslintConfig": {\n "extends": "../chipper/eslint/sim_eslintrc.js"\n }\n}';}); ```

So we are confident about publishing that one.

Similar diff for Ohm's Law.

samreid commented 5 years ago

Since @chrisklus and I performed QA testing ourselves, and additional diff testing to make sure the changes were all intentional, we are ready to deploy the changes to production.

samreid commented 5 years ago

We deployed the changes to production and double-checked that they seem reasonable by testing in the browser and running text diffs between the RCs and the published versions. @ariel-phet can you please assign someone to verify that these 3 sims (blackbody-spectrum, isotopes-and-atomic-mass, ohms-law) now work properly in the android app?

samreid commented 5 years ago

For completeness, here are the maintenance steps we applied:

Maintenance.reset()
Maintenance.createPatch( 'query-string-machine', 'https://github.com/phetsims/query-string-machine/issues/34' )
Maintenance.addNeededPatchesAfter( 'query-string-machine', '570fe1febbd045d44b9d6d88433a7f8a9d84a1d6' )
Maintenance.removeNeededPatchesAfter( 'query-string-machine', '1f64976a20ac1cf35c91c560f5e33df474eceec5' )
Maintenance.list()
Maintenance.addPatchSHA( 'query-string-machine', '1f64976a20ac1cf35c91c560f5e33df474eceec5' )
Maintenance.applyPatches()
Maintenance.updateDependencies()
Maintenance.deployReleaseCandidates()
Maintenance.listLinks()
Maintenance.deployProduction()
ariel-phet commented 5 years ago

@samreid just check this morning, all opening fine now, and did some quick spot checking just to make sure all was functioning.

Thanks to you and @chrisklus for handling this on a short time scale.