diff --git a/package-lock.json b/package-lock.json index 4f22b344b..7f5fd339b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -101,8 +101,8 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.23-hotfix.2", - "scratch-l10n": "3.15.20230627032203", + "scratch-gui": "2.0.77", + "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", @@ -23509,39 +23509,21 @@ } }, "node_modules/scratch-blocks": { - "version": "0.2.0-prerelease.20230630075614", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230630075614.tgz", - "integrity": "sha512-1+d9wzGyGmlaftI3B23iRYMY+9Pj2IBCcDK7ZR1Ez7n13DQyK1PtWIWT75K+2qtj3RZTSt7oBH1iQvAWuAHnzw==", + "version": "0.2.0-prerelease.20230718081157", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.2.0-prerelease.20230718081157.tgz", + "integrity": "sha512-3ZO5cHKTTUFUoQ0kIFVNaywCoA/T2QLw21JldnVtdeUbBfmGDPKHNoFfv1QLVZHw3deOB/0feSC6szNfu/Q6fA==", "dev": true, "dependencies": { "exports-loader": "0.7.0", "google-closure-library": "20190301.0.0", "imports-loader": "0.8.0", - "scratch-l10n": "3.15.20230630032209" - } - }, - "node_modules/scratch-blocks/node_modules/scratch-l10n": { - "version": "3.15.20230630032209", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", - "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" + "scratch-l10n": "3.15.20230718032211" } }, "node_modules/scratch-gui": { - "version": "2.0.23-hotfix.2", - "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.23-hotfix.2.tgz", - "integrity": "sha512-LaKE3mRu7lqmCvo1mxrIHZltrKEcxh1Z3W7rDgwa5x1G6R0ClR4xo5nCULBeula97meXgI5UNGObedw0KwlfcQ==", + "version": "2.0.77", + "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-2.0.77.tgz", + "integrity": "sha512-saaYzmcM0aeD3busS8xt91s4vdtLhom30FYxIVu8+YIbvoPeFChwE3c5b/PqeUgiprpubHs8K4UhDnzTfTYe0A==", "dev": true, "dependencies": { "@microbit/microbit-universal-hex": "0.2.2", @@ -23596,14 +23578,14 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20221123180128", - "scratch-blocks": "0.2.0-prerelease.20230630075614", - "scratch-l10n": "3.15.20230630032209", - "scratch-paint": "2.0.7", - "scratch-render": "0.1.0-prerelease.20230318150639", + "scratch-blocks": "0.2.0-prerelease.20230718081157", + "scratch-l10n": "3.15.20230718032211", + "scratch-paint": "2.0.21", + "scratch-render": "0.1.0-prerelease.20230710194419", "scratch-render-fonts": "1.0.0-prerelease.20221102164332", "scratch-storage": "2.2.1", - "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", - "scratch-vm": "1.5.76", + "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", + "scratch-vm": "1.5.90", "startaudiocontext": "1.2.1", "style-loader": "^0.23.0", "text-encoding": "0.7.0", @@ -23952,28 +23934,10 @@ "symbol-observable": "^1.0.3" } }, - "node_modules/scratch-gui/node_modules/scratch-l10n": { - "version": "3.15.20230630032209", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230630032209.tgz", - "integrity": "sha512-GAEpZjLspVbSCmYe2fVfWnYusQ9pNDXxlbAacm81svw2EbLeQsC9pB5kxAsv1E15PkS/BDyBdo76x1+cITf5mA==", - "dev": true, - "dependencies": { - "@babel/cli": "^7.1.2", - "@babel/core": "^7.1.2", - "@transifex/api": "4.2.5", - "babel-plugin-react-intl": "^3.0.1", - "download": "^8.0.0", - "transifex": "1.6.6" - }, - "bin": { - "build-i18n-src": "scripts/build-i18n-src.js", - "tx-push-src": "scripts/tx-push-src.js" - } - }, "node_modules/scratch-gui/node_modules/scratch-paint": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.7.tgz", - "integrity": "sha512-5TUkOiaZHyVgUaiWF0WIEr8n5fbyBVZYUXpeK6GxeCsH/Wbb7tk4WtcBrgtf7wcDLroDn+qiGptlj0cZLxWQ1g==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-2.0.21.tgz", + "integrity": "sha512-LoEUU53rO5zJSp4dGOvAg0jFXkd/jiloETr2yz2AcNizCbPhWnQ0fz7bRR+pOEHzkMOsJk4rapfeSSyI1ed1VA==", "dev": true, "dependencies": { "@scratch/paper": "0.11.20200728195508", @@ -24059,9 +24023,9 @@ } }, "node_modules/scratch-l10n": { - "version": "3.15.20230627032203", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230627032203.tgz", - "integrity": "sha512-b2Rp4U11uXedYkH1T2zGOVI8w2itzpFBLOzXy209Wi+sTAQnLCCxNuy+OVRmKyFf6wHHSedDOUahGdSex1vfBA==", + "version": "3.15.20230718032211", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.15.20230718032211.tgz", + "integrity": "sha512-USFDniZJP3QpTnBKKXBNw7w0jjvx6qCP5bWkNEF/xRIypSywJ1O2Os9CSSzm3tq7lHqXJRD5XVfxgvC+H0Xp2A==", "dev": true, "dependencies": { "@babel/cli": "^7.1.2", @@ -24100,9 +24064,9 @@ } }, "node_modules/scratch-render": { - "version": "0.1.0-prerelease.20230318150639", - "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20230318150639.tgz", - "integrity": "sha512-NmetrU5Ubyik9T3g4L4pbyYYjTERQ2QxxtevgBmCGxIJgMQskmtImAsISC6Qko21YQWPQNG9X/BEJluhJG6CZA==", + "version": "0.1.0-prerelease.20230710194419", + "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20230710194419.tgz", + "integrity": "sha512-dIJ2U8hWTdWs8QPUZnzZugChwJIS3KJnGBb+SA49/XswFb5RbGayegr8L67HDjOdkcFH1npI1tXiNcLFyHZY8A==", "dev": true, "dependencies": { "grapheme-breaker": "0.3.2", @@ -24112,7 +24076,7 @@ "minilog": "3.1.0", "raw-loader": "^0.5.1", "scratch-storage": "^1.0.0", - "scratch-svg-renderer": "0.2.0-prerelease.20230224194137", + "scratch-svg-renderer": "0.2.0-prerelease.20230710144521", "twgl.js": "4.4.0" }, "peerDependencies": { @@ -24223,13 +24187,14 @@ } }, "node_modules/scratch-svg-renderer": { - "version": "0.2.0-prerelease.20230224194137", - "resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230224194137.tgz", - "integrity": "sha512-NhsWkc0ci5R7ZH9Z7j6crI69Oe9XtNlp4u+Q6bOoLicGHJBnNeDeD2/w2ySxiYnnhJI9KioByvAoOwxZnEA+0Q==", + "version": "0.2.0-prerelease.20230710144521", + "resolved": "https://registry.npmjs.org/scratch-svg-renderer/-/scratch-svg-renderer-0.2.0-prerelease.20230710144521.tgz", + "integrity": "sha512-T+jmJGZWeBEAtIsV+6WpAzglANRaUJVxQLIKoD68VhD142l6XBf5WwHJiJkK9vysp6H24zchwTZwq3R34NF14Q==", "dev": true, "dependencies": { "base64-js": "1.2.1", "base64-loader": "1.0.0", + "css-tree": "1.1.3", "dompurify": "2.2.7", "fastestsmallesttextencoderdecoder": "^1.0.22", "minilog": "3.1.0", @@ -24261,9 +24226,9 @@ "dev": true }, "node_modules/scratch-vm": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.76.tgz", - "integrity": "sha512-GawQ+5eddw9YtOgxlIjlIPmD/NVmiCRmHJy9EJIXwZdK5oedbFaZQKxKUigmmreG4XPd5twXVFtPykYZGhemWw==", + "version": "1.5.90", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-1.5.90.tgz", + "integrity": "sha512-YfxsYhF8pS9VJMJVGQdE17QU0B76Zm+HDeI+7bxqqrSSNbxylRPr4wJS8juTY2RJgiYQZ0ajAHBGB8cNk7+vIA==", "dev": true, "dependencies": { "@vernier/godirect": "1.5.0", diff --git a/package.json b/package.json index b1ecac061..451dc08d5 100644 --- a/package.json +++ b/package.json @@ -136,8 +136,8 @@ "regenerator-runtime": "0.13.9", "sass": "1.49.7", "sass-loader": "10.2.1", - "scratch-gui": "2.0.23-hotfix.2", - "scratch-l10n": "3.15.20230627032203", + "scratch-gui": "2.0.77", + "scratch-l10n": "3.15.20230718032211", "selenium-webdriver": "4.1.0", "slick-carousel": "1.6.0", "style-loader": "0.12.3", diff --git a/src/components/extension-landing/extension-landing.scss b/src/components/extension-landing/extension-landing.scss index 6d569f0d5..7d2f45d4f 100644 --- a/src/components/extension-landing/extension-landing.scss +++ b/src/components/extension-landing/extension-landing.scss @@ -7,6 +7,11 @@ padding: 0; } +html { + // Adjust target position to compensate for the floating top content + scroll-padding-top: calc(50px + 5rem); // nav bar + OS chooser +} + .extension-landing { &>div { padding: 4rem 0; diff --git a/src/components/extension-landing/extension-troubleshooting.jsx b/src/components/extension-landing/extension-troubleshooting.jsx index 7ca3df87c..c06ee17c2 100644 --- a/src/components/extension-landing/extension-troubleshooting.jsx +++ b/src/components/extension-landing/extension-troubleshooting.jsx @@ -13,7 +13,7 @@ const ExtensionTroubleshooting = props => { }; return ( -

@@ -22,7 +22,7 @@ const ExtensionTroubleshooting = props => { values={sharedValues} />

{props.children} diff --git a/src/components/extension-landing/install-scratch-link.jsx b/src/components/extension-landing/install-scratch-link.jsx index 507cdbeb7..9c6418b6a 100644 --- a/src/components/extension-landing/install-scratch-link.jsx +++ b/src/components/extension-landing/install-scratch-link.jsx @@ -11,60 +11,62 @@ require('./extension-landing.scss'); // Assumes this will only be called with an OS that needs Scratch Link const InstallScratchLink = ({ - currentOS + currentOS, + hideScratchLink }) => (

-
- - - - - + }-store-badge.svg`} + /> + + + + + + + +
+ - + -
+ -
+ +

+
+ + {!hideScratchLink && + + + + ) + }} + /> + } + + + ) + }} + /> +
@@ -80,7 +120,8 @@ const InstallScratchLink = ({ ); InstallScratchLink.propTypes = { - currentOS: PropTypes.string + currentOS: PropTypes.string.isRequired, + hideScratchLink: PropTypes.bool }; module.exports = InstallScratchLink; diff --git a/src/components/steps/steps.scss b/src/components/steps/steps.scss index 0fdecd159..e6d34807f 100644 --- a/src/components/steps/steps.scss +++ b/src/components/steps/steps.scss @@ -48,11 +48,12 @@ box-sizing: border-box; .step-image { - height: 10rem; + max-height: 10rem; img { - width: auto; - height: 100%; + max-height: 10rem; + width: 100%; + height: auto; } } } diff --git a/src/l10n.json b/src/l10n.json index 4b6c25e6c..c23765d27 100644 --- a/src/l10n.json +++ b/src/l10n.json @@ -167,7 +167,14 @@ "installScratchLink.installHeaderTitle": "Install Scratch Link", "installScratchLink.downloadAndInstall": "Download and install Scratch Link.", - "installScratchLink.startScratchLink": "Start Scratch Link and make sure it is running. It should appear in your toolbar.", + "installScratchLink.startScratchLink.macOS": "Start Scratch Link and make sure it is running. It should appear in your menu bar.", + "installScratchLink.startScratchLink.Windows": "Start Scratch Link and make sure it is running. It should appear in your notification area (system tray).", + "installScratchLink.startScratchLink2.macOS": "If it does not appear, run Scratch Link from your Applications folder.", + "installScratchLink.startScratchLink2.Windows": "If it does not appear, run Scratch Link from your Start menu.", + "installScratchLink.learnMore.bodyText": "To learn more about Scratch Link, click {linkText}.", + "installScratchLink.learnMore.linkText": "here", + "installScratchLink.ifYouHaveTrouble.bodyText": "If you have trouble, see the {linkText} for tips.", + "installScratchLink.ifYouHaveTrouble.linkText": "Troubleshooting section", "parents.FaqAgeRangeA": "While Scratch is primarily designed for 8 to 16 year olds, it is also used by people of all ages, including younger children with their parents.", "parents.FaqAgeRangeQ": "What is the age range for Scratch?", @@ -440,7 +447,7 @@ "extensions.troubleshootingTitle": "Troubleshooting", "extensions.browserCompatibilityTitle": "Make sure your browser is compatible with Scratch Link", - "extensions.browserCompatibilityText": "Scratch Link 1.4 is not compatible with Safari. If you use macOS, please use another supported browser, such as Chrome or Firefox.", + "extensions.browserCompatibilityText2": "Scratch Link 1.4 is not compatible with Safari. If you use Safari, please upgrade to Scratch Link 2.0.", "extensions.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "extensions.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", "extensions.checkOsVersionText2": "If you are using macOS 12, please update to macOS 12.3 or newer. Earlier versions of macOS 12 do not work correctly with Scratch Link.", @@ -453,5 +460,20 @@ "bluetooth.enableLocationServicesTitle": "Make sure you have location services enabled on Chromebooks or Android tablets", "bluetooth.enableLocationServicesText": "Bluetooth can be used to provide location data to the app. In addition to granting the Scratch App permission to access location, location must be enabled in your general device settings. Search for 'Location' in your settings, and make sure it is on. On Chromebooks search for 'Location' in the Google Play Store Android preferences.", - "privacyBanner.update": "The Scratch privacy policy has been updated, effective May 25, 2023. You can see the new policy here." + "privacyBanner.update": "The Scratch privacy policy has been updated, effective May 25, 2023. You can see the new policy here.", + + "renameAccount.accountBlocked": "Account Blocked", + "renameAccount.toRecover": "To recover access to your account, change your username.", + "renameAccount.yourScratchAccount": "Your scratch account has been temporarily blocked because your username appears to contain personal information.", + "renameAccount.privacyIssue": "This is a serious privacy issue. When you share information like this, it is visible to everyone on the internet, so please be careful what you share", + "renameAccount.thingsToAvoid": "When creating a username, please remember to avoid using last names, school names, or other private information in your username.", + "renameAccount.yourScratchAccountInappropriate": "Your scratch account has been temporarily blocked because your username is not appropriate for Scratch.", + "renameAccount.scratchIsForKids": "Scratch is for kids ages 8 and up, and it's important to us that the Scratch website is a safe and friendly educational resource for everyone, but that's hard to achieve if users are choosing disrespectful or inappropriate usernames.", + "renameAccount.rememberToFollow": "When creating a username, please remember to follow the {communityGuidelinesLink}", + "renameAccount.CommunityGuidelines": "Community Guidelines", + "renameAccount.changeYourUsername": "Change your Username", + "renameAccount.makeSure": "Make sure the username you chose is aligned with {communityGuidelinesLink}", + "renameAccount.scratchsCommunityGuidelines": "Scratch's Community Guidelines", + "renameAccount.change": "Change", + "renameAccount.pastNotifications": "Here are your past admin notifications" } diff --git a/src/lib/os-enum.js b/src/lib/os-enum.js index 24d41c018..85037880d 100644 --- a/src/lib/os-enum.js +++ b/src/lib/os-enum.js @@ -1,3 +1,6 @@ +/** + * @enum {string} + */ const OS_ENUM = { WINDOWS: 'Windows', MACOS: 'macOS', diff --git a/src/redux/session.js b/src/redux/session.js index 162b230e7..6343f5aef 100644 --- a/src/redux/session.js +++ b/src/redux/session.js @@ -153,6 +153,7 @@ module.exports.selectIsLoggedIn = state => !!get(state, ['session', 'session', ' module.exports.selectUsername = state => get(state, ['session', 'session', 'user', 'username'], null); module.exports.selectToken = state => get(state, ['session', 'session', 'user', 'token'], null); module.exports.selectIsAdmin = state => get(state, ['session', 'session', 'permissions', 'admin'], false); +module.exports.selectUser = state => get(state, ['session', 'session', 'user'], false); module.exports.selectIsSocial = state => get(state, ['session', 'session', 'permissions', 'social'], false); module.exports.selectIsEducator = state => get(state, ['session', 'session', 'permissions', 'educator'], false); module.exports.selectProjectCommentsGloballyEnabled = state => diff --git a/src/views/about/about.jsx b/src/views/about/about.jsx index 459d50651..fa8b7719d 100644 --- a/src/views/about/about.jsx +++ b/src/views/about/about.jsx @@ -89,7 +89,7 @@ const About = injectIntl(({intl}) => ( languageCount: 70, translationLink: ( diff --git a/src/views/cookies/cookies.jsx b/src/views/cookies/cookies.jsx index 8a8fc11df..d40e43e75 100644 --- a/src/views/cookies/cookies.jsx +++ b/src/views/cookies/cookies.jsx @@ -13,7 +13,7 @@ const manageLink = chunks => {chunks}; const optOutLink = chunks => {chunks}; // When this page was last updated. See 'click Cookies link' in footer-links.test.js if you update this value. -const updated = new Date('2023-06-28T12:00:00.000-04:00'); +const updated = new Date('2023-07-06T12:00:00.000-04:00'); require('./cookies.scss'); @@ -75,10 +75,10 @@ const Cookies = injectIntl(() => ( - scratchsessionid + scratchsessionsid Scratch - + diff --git a/src/views/developers/developers.jsx b/src/views/developers/developers.jsx index 6e753931e..ef20d9c7d 100644 --- a/src/views/developers/developers.jsx +++ b/src/views/developers/developers.jsx @@ -88,7 +88,7 @@ const Developers = () => ( ), githubLink: ( - + @@ -115,7 +115,7 @@ const Developers = () => ( id="developers.wwwIntro" values={{ wwwIntroLink: ( - + GitHub ) @@ -143,7 +143,7 @@ const Developers = () => ( ), githubLink: ( - + GitHub ) @@ -361,7 +361,7 @@ const Developers = () => ( id="developers.faqCollabBody" values={{ githubLink: ( - GitHub + GitHub ), contactUsLink: ( diff --git a/src/views/download/scratch-link/download.jsx b/src/views/download/scratch-link/download.jsx index ac0a88402..94e7e4c0e 100644 --- a/src/views/download/scratch-link/download.jsx +++ b/src/views/download/scratch-link/download.jsx @@ -57,6 +57,7 @@ const ScratchLink = ({intl}) => { /> {(isDownloaded(os)) && ( )} diff --git a/src/views/download/scratch2/download.jsx b/src/views/download/scratch2/download.jsx index e4b633d26..c7a60cda7 100644 --- a/src/views/download/scratch2/download.jsx +++ b/src/views/download/scratch2/download.jsx @@ -216,7 +216,7 @@ class Download extends React.Component { />

{chunks}}} + values={{a: chunks => {chunks}}} />

diff --git a/src/views/download/scratch2/l10n.json b/src/views/download/scratch2/l10n.json index e51b42bb5..6ac5925d6 100644 --- a/src/views/download/scratch2/l10n.json +++ b/src/views/download/scratch2/l10n.json @@ -22,7 +22,7 @@ "download.otherVersionsTitle": "Other Versions of Scratch", "download.otherVersionsOlder": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing Scratch 1.4.", "download.otherVersionsOlderHTML": "If you have an older computer, or cannot install the Scratch 2.0 offline editor, you can try installing Scratch 1.4.", - "download.otherVersionsAdmin": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download here.", + "download.otherVersionsAdmin": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download here.", "download.otherVersionsAdminHTML": "If you are a network administrator: a Scratch 2.0 MSI has been created and maintained by a member of the community and hosted for public download here.", "download.knownIssuesTitle": "Known issues", "download.knownIssuesOne": "If your offline editor is crashing directly after Scratch is opened, install the Scratch 2 offline editor again (see step 2 above). This issue is due to a bug introduced in Adobe AIR version 14 (released April 2014).", diff --git a/src/views/ev3/ev3.jsx b/src/views/ev3/ev3.jsx index 562715e28..cb9eb76e8 100644 --- a/src/views/ev3/ev3.jsx +++ b/src/views/ev3/ev3.jsx @@ -73,6 +73,7 @@ class EV3 extends ExtensionLanding { /> {(isDownloaded(this.state.OS)) && ( )} @@ -314,6 +315,12 @@ class EV3 extends ExtensionLanding { />

+

+

)}

diff --git a/src/views/ev3/l10n.json b/src/views/ev3/l10n.json index 40e7c258c..f96468748 100644 --- a/src/views/ev3/l10n.json +++ b/src/views/ev3/l10n.json @@ -28,6 +28,8 @@ "ev3.troubleshootingTitle": "Troubleshooting", "ev3.checkOSVersionTitle": "Make sure your operating system is compatible with Scratch Link", "ev3.checkOSVersionText": "The minimum operating system versions are listed at the top of this page. See instructions for checking your version of {winOSVersionLink} or {macOSVersionLink}.", + "ev3.tryScratchLink1.4": "If you have issues connecting EV3 with Scratch Link 2.0, please try Scratch Link 1.4", + "ev3.downloadScratchLink1.4": "Download Scratch Link 1.4", "ev3.winOSVersionLinkText": "Windows", "ev3.macOSVersionLinkText": "macOS", "ev3.makeSurePairedTitle": "Make sure your computer is paired with your EV3",