Question:
I'm testing beta. Describe the bug When submitting a challenge using Ctrl+Enter it automatically completes also the following challenge. To Reproduce Steps to reproduce the behavior: a logged out user to the first challenge it Ctrl+Enter marks as solved also the following challenge and you can go ahead Expected behavior It should solve the current challenge and present the following one. Screenshots As you can see I can submit multiple challenges: ! Desktop (please complete the following information): OS: Ubuntu Browser Firefox Version 69.0.1 Additional context I've been able to reproduce it on but I could skip only one challenge. On my local dev I managed to skip 4.
I've digged a bit on this issue, and I think the problem is somehow related to this line: As this is triggered also when I'm submitting the finished challenge. If I comment that line out everything works fine, meaning I can Ctrl+Enter to run the tests and submit and the bug disappear. I'm going to dig a bit more, but does that makes any sense to you?
Thanks for testing our beta version and reporting this! You rock. /cc
Thanks It looks like I didn't test the logged out behaviour. so, what do we want to happen for logged out users? The issue I see is that it currently says 'Submit and go to the next challenge', but clearly they can't submit. For now, do we just want them to see the same as logged in users (and quietly not submit)?
Here is what I would do: ! Of course the modal should close as well like you mentioned. The signin button can link to same as the home page CTA. And we could remove from the first button
Turns out it's not working properly even when the user is logged in. I think it's a race condition between and . was quite right, the problem is on that line. It shouldn't be called if the modal is open since it's listening to as well.
yes I think it's with the in the editor and the in the . I can give a further look later if you wish.
Thanks for the offer but I think (with your help!) I've fixed it. It seemed only fair, since I introduced the bug.
Excellent!
Release on its way, should be available within the hour.

const { children, navigate, isSignedIn, ...restProps } = props; return ( <Button <ins> bsStyle='default' className={(restProps.block ? 'btn-cta-big' : '') + ' signup-btn btn-cta'} </ins> href='/signin' onClick={createOnClick(navigate, isSignedIn)} {...restProps} <del> bsStyle='default' className={(restProps.block ? 'btn-cta-big' : '') + ' signup-btn btn-cta'} </del> > {children || 'Sign In'} </Button>

import { Button, Modal } from '@freecodecamp/react-bootstrap'; import ga from '../../../analytics'; <ins> import Login from '../../../components/Header/components/Login'; </ins> import GreenPass from '../../../assets/icons/GreenPass'; import { dasherize } from '../../../../../utils/slugs';

challengeMetaSelector } from '../redux'; <ins> import { isSignedInSelector } from '../../../redux'; </ins> const mapStateToProps = createSelector( challengeFilesSelector, challengeMetaSelector, isCompletionModalOpenSelector, <ins> isSignedInSelector, </ins> successMessageSelector, <del> (files, { title }, isOpen, message) => ({ </del> <ins> (files, { title }, isOpen, isSignedIn, message) => ({ </ins> files, title, isOpen, <ins> isSignedIn, </ins> message }) );

files: PropTypes.object.isRequired, handleKeypress: PropTypes.func.isRequired, isOpen: PropTypes.bool, <ins> isSignedIn: PropTypes.bool.isRequired, </ins> message: PropTypes.string, submitChallenge: PropTypes.func.isRequired, title: PropTypes.string

const { close, isOpen, <ins> isSignedIn, </ins> submitChallenge, handleKeypress, message,

bsStyle='primary' onClick={submitChallenge} >  Submit and go to next challenge{' '}   {isSignedIn ? 'Submit and g' : 'G'}o to next challenge{' '}  (Ctrl + Enter) </Button>  {isSignedIn ? null : ( <Login block={true} bsSize='lg' bsStyle='primary' className='btn-invert' > Sign in to save your progress </Login> )}  {this.state.downloadURL ? ( <Button block={true}


Question: Describe the bug Entering 'n' or 'p' in the solution URL of projects takes me back to the previous('p') or next('n') challenge. To Reproduce to any project section where URL is required 'n' or 'p' in the URL field Expected behavior This should only happen when the text field is not in focus. Desktop (please complete the following information): OS: Windows 10 Pro 32 Bit Pro Browser: Chrome Version: 77.0.3865.90

import { bindActionCreators } from 'redux'; import { createSelector } from 'reselect'; import { SearchBox } from 'react-instantsearch-dom'; <del> import { HotKeys, configure } from 'react-hotkeys'; </del> <ins> import { HotKeys, ObserveKeys } from 'react-hotkeys'; </ins> import { isEqual } from 'lodash'; import {

import './searchbar-base.css'; import './searchbar.css'; <del> // Configure react-hotkeys to work with the searchbar configure({ ignoreTags: ['select', 'textarea'] }); </del> const propTypes = { innerRef: PropTypes.object, isDropdownEnabled: PropTypes.bool,

<label className='fcc_sr_only' htmlFor='fcc_instantsearch'> Search </label> <del> <SearchBox focusShortcuts={[83, 191]} onChange={this.handleChange} onFocus={this.handleFocus} onSubmit={this.handleSearch} showLoadingIndicator={true} translations={{ placeholder }} /> </del> <ins> <ObserveKeys> <SearchBox focusShortcuts={[83, 191]} onChange={this.handleChange} onFocus={this.handleFocus} onSubmit={this.handleSearch} showLoadingIndicator={true} translations={{ placeholder }} /> </ObserveKeys> </ins> {isDropdownEnabled && isSearchFocused && ( <SearchHits handleHits={this.handleHits}


Question: <img width="927" alt="Settings_freeCodeCamp_org" src="https://user-"

{ type: 'info', message: dedent` <del> ${username} has chosen to make their profile private. They will need to make their profile public </del> <ins> ${username} has chosen to make their portfolio private. They will need to make their portfolio public </ins> in order for others to be able to view their certification. ` }

return ( <Fragment> <Helmet> <del> <title>Report a users profile | freeCodeCamp.org</title> </del> <ins> <title>Report a users portfolio | freeCodeCamp.org</title> </ins> </Helmet> <Spacer size={2} /> <Row className='text-center'> <Col sm={8} smOffset={2} xs={12}> <h2> Do you want to report {username} <del> 's profile for abuse? </del> <ins> 's portfolio for abuse? </ins> </h2> </Col> </Row>

return isSessionUser ? ( <Fragment> <FullWidthRow>
You have not made your profile public.

 You have not made your portfolio public.
  </FullWidthRow> <FullWidthRow>
  You need to change your privacy setting in order for your profile to be seen by others. This is a preview of how your profile will look   You need to change your privacy setting in order for your portfolio to be seen by others. This is a preview of how your portfolio will look  when made public.
 </FullWidthRow>

<Fragment> <FullWidthRow>
  {username} has not made their profile public.   {username} has not made their portfolio public.
 </FullWidthRow> <FullWidthRow>
 {username} needs to change their privacy setting in order for you to  view their profile.   view their portfolio.
 </FullWidthRow> <Spacer />

return ( <Fragment>
  Before we issue our verified certification to a camper, he or she must accept our Academic Honesty Pledge, which reads:   Before you can claim a verified certification, you must accept our Academic Honesty Pledge, which reads:

 "I understand that plagiarism means copying someone else’s work and

"Aside from using open source libraries such as jQuery and Bootstrap, and short snippets of code which are clearly attributed to their original author, 100% of the code in my projects was written by me, or <del> along with another camper with whom I was pair programming in real time." </del> <ins> along with another person going through the freeCodeCamp curriculum with whom I was pair programming in real time." </ins> </p> <p key={5}> "I pledge that I did not plagiarize any of my freeCodeCamp.org work. I

</p> <p key={6}> In the situations where we discover instances of unambiguous plagiarism, <del> we will replace the camper in question’s certification with a message </del> <ins> we will replace the person in question’s certification with a message </ins> that "Upon review, this account has been flagged for academic dishonesty." </p>


Question:
<img width="1074" alt="Profile_freeCodeCamp_org" src="https://user-"
can I take this issue?
Thank you and for your interest. This issue might need a little more investigation before arriving at the final solution. I encourage you to find similar issues to tackle in the meantime. should I only audit the copy to replace profile with portfolio or you would rather changing the profile instances in the client and the api-server entirely?
I would like to get it assigned..
this should come as a cosmetic change to the copy only, do not change any endpoints or code (functions, objects, files) etc. It can be done to both API and the client where copy edit is needed.

{ type: 'info', message: dedent` <del> ${username} has chosen to make their profile private. They will need to make their profile public </del> <ins> ${username} has chosen to make their portfolio private. They will need to make their portfolio public </ins> in order for others to be able to view their certification. ` }

return ( <Fragment> <Helmet> <del> <title>Report a users profile | freeCodeCamp.org</title> </del> <ins> <title>Report a users portfolio | freeCodeCamp.org</title> </ins> </Helmet> <Spacer size={2} /> <Row className='text-center'> <Col sm={8} smOffset={2} xs={12}> <h2> Do you want to report {username} <del> 's profile for abuse? </del> <ins> 's portfolio for abuse? </ins> </h2> </Col> </Row>

return isSessionUser ? ( <Fragment> <FullWidthRow>
You have not made your profile public.

 You have not made your portfolio public.
  </FullWidthRow> <FullWidthRow>
  You need to change your privacy setting in order for your profile to be seen by others. This is a preview of how your profile will look   You need to change your privacy setting in order for your portfolio to be seen by others. This is a preview of how your portfolio will look  when made public.
 </FullWidthRow>

<Fragment> <FullWidthRow>
  {username} has not made their profile public.   {username} has not made their portfolio public.
 </FullWidthRow> <FullWidthRow>
 {username} needs to change their privacy setting in order for you to  view their profile.   view their portfolio.
 </FullWidthRow> <Spacer />

return ( <Fragment>
  Before we issue our verified certification to a camper, he or she must accept our Academic Honesty Pledge, which reads:   Before you can claim a verified certification, you must accept our Academic Honesty Pledge, which reads:

 "I understand that plagiarism means copying someone else’s work and

"Aside from using open source libraries such as jQuery and Bootstrap, and short snippets of code which are clearly attributed to their original author, 100% of the code in my projects was written by me, or <del> along with another camper with whom I was pair programming in real time." </del> <ins> along with another person going through the freeCodeCamp curriculum with whom I was pair programming in real time." </ins> </p> <p key={5}> "I pledge that I did not plagiarize any of my freeCodeCamp.org work. I

</p> <p key={6}> In the situations where we discover instances of unambiguous plagiarism, <del> we will replace the camper in question’s certification with a message </del> <ins> we will replace the person in question’s certification with a message </ins> that "Upon review, this account has been flagged for academic dishonesty." </p>


Question: <!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Browser Version: Operating System: If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):

#learn-app-wrapper .reflex-container.horizontal > .reflex-splitter { height: 5px; } <ins> #description p, #instructions p { font-family: 'Lato', sans-serif; } </ins>

.honesty-panel p { margin-left: 10px; margin-right: 10px; <ins> font-family: 'Lato', sans-serif; </ins> } .honesty-panel {

margin-top: 1.45rem; } <ins> .intro-layout p, .intro-layout li { font-family: 'Lato', sans-serif; } </ins> .intro-toc .list-group-item { margin: 5px auto; }


Question:
Describe the bug Some of the input boxes (Email Settings and Your Internet Presence at least) get the old green border when valid inputs are entered. To Reproduce Steps to reproduce the behavior: to down to 'Your Internet Presence' below 'Twitter' on something else to remove focus the green border. Expected behavior The border should fit with the current colour scheme. Screenshots !
Hey there! I could handle this! :slightlysmilingface:
Thanks Feel free to submit a PR when you're ready.
Hi I had tested this on all input boxes in setting page. Affected input are only in Email Settings and Internet Presence like you described. The green border is caused by Bootstrap default class . I also had overridden color changes caused by another Bootstrap default classes which is and . The focus state was actually also affected but it is harder to see because the border became dark green (which is quite hard to distinguish with dark gray in general). I had fixed that too. I had tested my fix both on day and night mode. In night mode, border color on normal and focus state is hard to see but it should be correct with and . I am also sure that accessibility is not negatively affected even though there are no longer border color changes, because the input label is still able to change color correctly based on previous validation result classes
I tried out your PR and it looks great! Before we go ahead with that I would like your thoughts on a couple of things. Firstly, are you getting the appropriate error and warning classes applied? Testing locally I don't seem to be. Secondly, what do you think about inverting the input boxes in night mode? i.e. dark background + light text to fit in with the rest of the aesthetic.
Thanks for testing it :) I realized about those two points you mentioned when I was working with this issue, I intended to create several new issues about it and another accessibility issue. Yes the client validation for email settings and internet presence is all over the place and need some improvements. Border color for focus state on input boxes with night mode is also hard to see. Inverting some colors looks like a good idea. Now that this issue is already closed, let's move the discussion to new issues. I will mention you when it have been created.

color: var(--danger-color); } <ins> .has-error .form-control, .has-warning .form-control, .has-success .form-control { border-color: var(--quaternary-background); } .has-error .form-control:focus, .has-warning .form-control:focus, .has-success .form-control:focus { border-color: var(--tertiary-color); } </ins> .panel-primary { border-color: var(--primary-color); }


Question:
Describe the bug The 'Show other ways to donate' button looks like a link until you click on it, when it looks like a button. To Reproduce Steps to reproduce the behavior: to /donate on 'Show other ways to donate' : ! Expected behavior I think it should always look like a button, since clicking on it modifies the page rather than takes you to a new one.
I'll look into this.
Thanks If you could check with Ahmad as to what he wants here before submitting a PR (since he's worked on the formatting very recently), that would be great. I suspect he's a little busy right now, though, so I just put this issue here to keep track of it.
Yeap. I'll talk to him after a day or two.
Please assign this to me if possible.
i see your concern with consistency, and this button looks like a link by design. The behaviour is caused by the :focus state of the button. thanks for your interest. we could make the button behave identical to a link by targeting :hover and :focus:hover styles. Let's agree on the solution before the implementation. on a second thought this might not even be an issue. before the users click on the button, it looks like a link so they are not distracted from the main task. but when users click on it, the focus state keeps the button more visible. what do you think?
The other ways to donate should be an actual link and styled as such not a button.
if you are still interested in working on this issue, could please go ahead with replacing the 'Show other ways to donate' button with an actual link with onClick={this.toggleOtherOptions}.
Thanks! Going straight away to fix it.

background-image: none; box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); } <del> .btn-link { </del> <ins> .btn-link, .btn-link:focus, .btn-link:active { </ins> color: inherit; border: none; text-decoration: underline; background: transparent; <ins> padding: 0; outline: 0; </ins> } <del> .btn-link:hover { </del> <ins> .btn-link:hover, .btn-link:focus:active { </ins> background: var(--tertiary-background); text-decoration: none; color: inherit;


Question:
Describe the bug When you reload a page two style issues appear. The placeholder text moves slightly once the page has fully loaded. The search hits are briefly bold To Reproduce Steps to reproduce the behavior: to (or any page with search) the placeholder text move on the search bar anything the result appear briefly as bold, then change to a normal weight Expected behavior The page should start with the styles it ends up getting. Screenshots !
Hey, I wanna help with it. Where can I find the code for it? (First time contributing)
I'm not 100% sure where the problem is, but the , and components are all involved to some degree. Somehow the are not getting the right classes when first rendered I think. I'm planning to take a closer look myself, tomorrow, but you're welcome to submit a PR/share any insight. As you wish!
It turns out it wasn't anything to do with those components. The problem is that the font doesn't get loaded until it's needed - in this case when the search results appear. That causes a brief flash of and that's the cause of the problem. I'm going to look into pre-loading the fonts and clear this up.

import Flash from '../Flash'; import Header from '../Header'; import Footer from '../Footer'; <ins> // preload common fonts import latoLightURL from '../../../static/fonts/lato/Lato-Light.woff'; import latoRegularURL from '../../../static/fonts/lato/Lato-Regular.woff'; import latoBoldURL from '../../../static/fonts/lato/Lato-Bold.woff'; // eslint-disable-next-line max-len import robotoRegularURL from '../../../static/fonts/roboto-mono/RobotoMono-Regular.woff'; // eslint-disable-next-line max-len import robotoBoldURL from '../../../static/fonts/roboto-mono/RobotoMono-Bold.woff'; // eslint-disable-next-line max-len import robotoItalicURL from '../../../static/fonts/roboto-mono/RobotoMono-Italic.woff'; </ins> import './fonts.css'; import './global.css';

{ name: 'keywords', content: metaKeywords.join(', ') } ]} > <ins> <link as='font' crossOrigin='anonymous' href={latoRegularURL} rel='preload' type='font/woff' /> <link as='font' crossOrigin='anonymous' href={latoLightURL} rel='preload' type='font/woff' /> <link as='font' crossOrigin='anonymous' href={latoBoldURL} rel='preload' type='font/woff' /> <link as='font' crossOrigin='anonymous' href={robotoRegularURL} rel='preload' type='font/woff' /> <link as='font' crossOrigin='anonymous' href={robotoBoldURL} rel='preload' type='font/woff' /> <link as='font' crossOrigin='anonymous' href={robotoItalicURL} rel='preload' type='font/woff' /> </ins> <style>{fontawesome.dom.css()}</style> </Helmet> <WithInstantSearch>


Question: We should make this more grammatically correct by adding a comma and space before the name, and a period after it. For example: Welcome back, Quincy Larson. <img width="1405" alt="Learn_freeCodeCamp_org" src="https://user-"

<Col sm={10} smOffset={1} xs={12}> <Spacer /> <h1 className='text-center big-heading'> <del> {name ? 'Welcome back ' + name : 'Welcome to freeCodeCamp.org'} </del> <ins> {name ? 'Welcome back, ' + name + '.' : 'Welcome to freeCodeCamp.org'} </ins> </h1> </Col> </Row>


Question:
On the home page, it lists the section as a certification.... ! Maybe remove that since there's no cert for it?
Yes, you are correct. I will defer to for the correct categorization for this.
We could change the font size of this. Then it would be visually distinct from the other items in this list.
We can indent the list belonging to same category. And make change in font style Like this way:- Certifications:       <a href="#"Responsive Web Design</a      <a href="#"JavaScript Algorithms and Data Structures</a      <a href="#"Front End Libraries</a      <a href="#"Data Visualization</a      <a href="#"APIs and Microservices</a      <a href="#"Information Security and Quality Assurance</a<a href="#"Coding Interview Prep</a
I'm not sure I like either of these solutions - it seems like it might just make a user ask themselves something like: "what's with that last one?" - And not be quite clear enough that it is not a cert. What about something a little more specific... Certifications:   <a href="#"Responsive Web Design</a  <a href="#"JavaScript Algorithms and Data Structures</a  <a href="#"Front End Libraries</a  <a href="#"Data Visualization</a  <a href="#"APIs and Microservices</a  <a href="#"Information Security and Quality Assurance</aAdditional Challenges:   <a href="#"Coding Interview Prep</a

export const Landing = ({ edges }) => { const superBlocks = uniq(edges.map(element => element.node.superBlock)); <ins> const interviewPrep = superBlocks.splice(6, 1); </ins> return ( <Fragment> <Helmet>

 ))}
  <Spacer />
Additional Learning:

 <Link state={{ superBlock: interviewPrep }} to={`/learn`}>
{interviewPrep}
 </Link>

  </Col> </Row> <Spacer />


Question:
Describe the bug When you left click while on the page the random quote gets replaced with a new one. To Reproduce Steps to reproduce the behavior: to on anything that doesn't take you to a new page the random quote get replaced Expected behavior A random quote should appear each time you visit learn, but it should not change unless you reload. Screenshots ! Additional Context This only appears once the site has been built, doesn't show the error. It is not happening in production, so presumably was introduced since
I see this on the production site as well.

import './welcome.css'; <ins> // created outside the function, so that the quotes don't change unless the // page is reloaded. const { quote, author } = randomQuote(); </ins> function Welcome({ name }) { <del> const { quote, author } = randomQuote(); </del> return ( <Fragment> <Row>


Question:
The video for the challenge needs to be updated due to changes in the challenge. We simplified the challenge to not introduce functions in this challenge.
Sure, I'll update the video.
Any status on this update?
Done.

id: 56533eb9ac21ba0edf2244bb title: Word Blanks challengeType: 1 <del> videoUrl: 'https://scrimba.com/c/cP3vVsm' </del> <ins> videoUrl: 'https://scrimba.com/c/caqn8zuP' </ins> forumTopicId: 18377 ---


Question:
Describe the bug For field in , error state can not be triggered. Warning state will be triggered when an email address with incorrect domain is entered (for example: ). For all fields in , both error and success state can not be triggered. To Reproduce Steps to reproduce the behavior: to http://localhost:8000/settings to fill and to Describe the bug Expected behavior For field in , error state should be triggered instead of warning state. There should only be two states for an email address. Success state is when it is a valid and reachable email address. Error state is when it is an invalid and unreachable email address. For all fields in . Success state is when it is a valid and reachable URL. Error state is when it is an invalid and unreachable URL. Desktop (please complete the following information): OS: Windows 10 1809 Build .832 Browser Latest Chrome Version 77.0.3865.120 (Official Build) (64-bit)
Calling to discuss this from issue . What do you think about this? Are there anything to add or change from the Expected Behavior I described?
the only thing I'm not sure about is 'unreachable'. Do you just mean unreachable because the URL is malformed? Like , for example. If so, then I completely agree. cc
Yes of course. 'Unreachable' is only defined by malformed email format ( valid length, etc) and URL format (protocol, colon, double slash, etc). It is also possible to check the top level domain part against current existing TLD programatically. Other than that, for example checking real email address which is existing should be done by email confirmation / verification.

return { state: 'success', message: '' }; } else { return { <del> state: 'warning', </del> <ins> state: 'error', </ins> message: 'We could not validate your email correctly, ' + 'please ensure it is correct'

import React, { Fragment, Component } from 'react'; import PropTypes from 'prop-types'; import { <ins> HelpBlock, </ins> FormControl, FormGroup, ControlLabel

getValidationStateFor(maybeURl = '') { if (!maybeURl || !maybeUrlRE.test(maybeURl)) { <del> return null; </del> <ins> return { state: null, message: '' }; </ins> } if (isURL(maybeURl)) { <del> return 'success'; </del> <ins> return { state: 'success', message: '' }; </ins> } <del> return 'error'; </del> <ins> return { state: 'error', message: 'We could not validate your URL correctly, ' + 'please ensure it is correct' }; </ins> } createHandleChange = key => e => {

const { formValues: { githubProfile, linkedin, twitter, website } } = this.state; <ins> const { state: githubProfileValidation, message: githubProfileValidationMessage } = this.getValidationStateFor(githubProfile); const { state: linkedinValidation, message: linkedinValidationMessage } = this.getValidationStateFor(linkedin); const { state: twitterValidation, message: twitterValidationMessage } = this.getValidationStateFor(twitter); const { state: websiteValidation, message: websiteValidationMessage } = this.getValidationStateFor(website); </ins> return ( <Fragment> <SectionHeader>Your Internet Presence</SectionHeader>

<form id='internet-presence' onSubmit={this.handleSubmit}> <FormGroup controlId='internet-github'  validationState={this.getValidationStateFor(githubProfile)}   validationState={githubProfileValidation}  >  <ControlLabel> GitHub </ControlLabel>   <ControlLabel>GitHub</ControlLabel>  <FormControl onChange={this.createHandleChange('githubProfile')} type='url' value={githubProfile} />  {githubProfileValidationMessage ? ( <HelpBlock>{githubProfileValidationMessage}</HelpBlock> ) : null}  </FormGroup> <FormGroup controlId='internet-linkedin'  validationState={this.getValidationStateFor(linkedin)}   validationState={linkedinValidation}  >  <ControlLabel> LinkedIn </ControlLabel>   <ControlLabel>LinkedIn</ControlLabel>  <FormControl onChange={this.createHandleChange('linkedin')} type='url' value={linkedin} />  {linkedinValidationMessage ? ( <HelpBlock>{linkedinValidationMessage}</HelpBlock> ) : null}  </FormGroup> <FormGroup controlId='internet-picture'  validationState={this.getValidationStateFor(twitter)}   validationState={twitterValidation}  >  <ControlLabel> Twitter </ControlLabel>   <ControlLabel>Twitter</ControlLabel>  <FormControl onChange={this.createHandleChange('twitter')} type='url' value={twitter} />  {twitterValidationMessage ? ( <HelpBlock>{twitterValidationMessage}</HelpBlock> ) : null}  </FormGroup> <FormGroup controlId='internet-website'  validationState={this.getValidationStateFor(website)}   validationState={websiteValidation}  >  <ControlLabel> Personal Website </ControlLabel>   <ControlLabel>Personal Website</ControlLabel>  <FormControl onChange={this.createHandleChange('website')} type='url' value={website} />  {websiteValidationMessage ? ( <HelpBlock>{websiteValidationMessage}</HelpBlock> ) : null}  </FormGroup> <BlockSaveButton disabled={


Question:
Please see below. The text has been shifted around a bit in some aspect ratios. We need to ensure that the text on certifications looks right on all screen sizes: <img width="1149" alt="5freeCodeCamporgonTwitterWearetakingfreeCodeCampdownsowecandeploysomemajorchangesWewillbebacksoonInthemeantimeourYouTubeisupandithas1000codingtutorialsonPythonSQLDataScience_andMachine_Lea" src="https://user-"
Can I get steps to reproduce? I can't see this on my dev build with any screen size.
I can't reproduce this either. Although on one load of the above cert, I did get the date with a dark font color... <img width="877" alt="Screen Shot 2019-10-18 at 7 20 31 AM" src="https://user-"But I couldn't reproduce this a second time. Seems like maybe some of the intended css isn't getting applied intermittently or something.
hmm. it seems like a theme related issue. all colors in the certificate should come from :root {} in the
Since we're dealing with formatting and whitespace of certificates here, should we not center this to the page? !
Is it not already centered I'm not sure what you are referring to. So I think I figured out how to reproduce my issue. The date gets the dark font when you open a cert in a new tab or go to the URL through the address bar. But gets the correct font when you just open the cert in the current tab from the portfolio page. Can anyone else check this?
I’m referring to vertical centring. See the white gap between the end of the certificate and where the browser ends
I put in a pull request to center the certificates vertically on large screens. I can't reproduce your font color issue. New tab and navigating with URL both show the correct font color for me. I also can't reproduce the font offset in the first screenshot. So I don't think there is anything else that can be done on this issue unless someone can reproduce these.
I am not very sure as well, could be some specific device or viewport size. Will check with the OP to test this. Thanks for the PR.
The problems that pointed out: were not addressed in , so this should not have been closed.
Can anyone else reproduce that? or Quincy's issue? I can still reproduce mine on production, but not locally. Perhaps it has worked itself out on master.
I will have a build pushed to dev within the hour. Would you like your user record there for testing?
Sure
Okay let's do a before and after, I am have your user record to .dev, and will let you know again on this thread when I have pushed a build.
I can reproduce it on production. I haven't had chance to do locally, but my guess is you'll need to build the client to see it.
The changes have now landed in production as well. Can you check?
it's something to do with client-only routes. If you build the client and then use to serve it, you see the problem Tom found. For some reason you get a 404 for the cert route and it loads, but the gets and so the certificate renders incorrectly. Everything works as expected when using .
Hello - This may help debug the issue. I do not have this issue when viewing the certificate from my profile page - after clicking the "View Full Stack Certification" button. <img width="1377" alt="Screen Shot 2019-11-21 at 9 27 44 AM" src="https://user-"I do have this issue when viewing the certificate while visiting the url directly. <img width="1372" alt="Screen Shot 2019-11-21 at 9 31 17 AM" src="https://user-"
i think some general theme based color styles are over writing that element styles, in this case if this case if we make the styles more specific, and apply to it should work. !
It's not just the fonts. The page sizing is also getting messed up when visiting from an external link. If you come from somewhere other than fCC, you'll see scrollbars.
I could not reproduce this on mac and chrome 78.0.3904.108. could you give tell me about the browser and operating system you are using.
See scrollbar to the right when I open it externally ! None if opened directly from fCC ! Also, notice whitespace is different
Alright, since we've the donation request, this issue has been rendered moot

color: var(--secondary-color); } <del> .fcc-modal .close { color: var(--secondary-color); opacity: 100%; </del> <ins> button.close { color: inherit; background-color: transparent; </ins> font-size: 28px; <ins> opacity: 0.5; </ins> text-shadow: none; } <ins> button.close:hover, button.close:focus { color: inherit; opacity: 1; background-color: transparent; } </ins> .modal-content { background-color: var(--secondary-background); border-radius: 0px;

font-size: 20px; text-align: right; margin-right: 100px; <del> color: #fff; </del> <ins> color: var(--gray-00); } .certification-namespace .issue-date strong { color: var(--gray-00); </ins> } .certification-namespace .information {


Question:
We have fixed this issue and it live on . Please go ahead and submit links to your solution and GitHub again and it should work now. If you see any 403 in the browser console that is fine and will clear itself. You can safely ignore them. Those are the past updates which will resolve as you submit valid solution URLs. Thanks for your patience with this fix. Original issue: Describe the bug When a backend project is submitted it does not send the solution or Github urls and is rejected, silently, by the server. <details<summaryOriginal issue details: </summaryTo Reproduce Steps to reproduce the behavior: to localhost:8000/learn/apis-and-microservices/apis-and-microservices-projects/exercise-tracker valid urls into Solution and Github Link "I've completed this challenge" "Submit..." at the next challenge to your public profile (with timeline public) that the project does not appear. Expected behavior Either the submission should succeed or the user should be informed that it has failed. </details
I was wrong about the 'silently' part. On the .dev site you can see that there is, briefly, a message warning you that the server is not being updated !, but that gets wiped out when the new page loads.
Can you re-confirm this. I just want to rule out our earlier outage, and that we need to update the template on boilerplate with the as a CORS allowed origin. I think a recent issue came up about this, can you help in digging through the issues on what it was and if it is related.
I can reproduce this on the current master and on production.
I can take a look at the example projects and boilerplates to make sure is allowed as an origin.
Yup, please test one of the projects and see if it works, which may mean we needing to do something fancy about these.
I've checked a few projects and those that have CORS settings all have . I've tried explicitly allowing and disabling Helmet and CORS wherever possible, but still get the same error.
Okay, need to investigate then.
I think the forms may not be sending the URLs in the first place. Well, the server is complaining because it isn't getting them.
Hi everyone! I've been facing this for about a week or so. Tested yesterday and today (just now) and it's still the same. For me it's at submitting the Issue Tracker project. Tests pass but after clicking Submit and go to next project, the request to fails with status 403, body is just 'Forbidden' and payload has only . For the full request output (headers, etc) see Best.
you were correct. Contributors, The forms are not sending the links to the API and the validation checks on the API reject the calls as 403 I have created a PR which will send a json response to make this less cryptic on the XHR response. Doesn't fix the issue, but better for debugging. Now, coming to the client: need to look into the redux wiring and understand why its not sending out the links to the API as it should. need to fix the learn (possibly in the layout) or somewhere else to show the messages received from API as Flash. The later can some as a separate pull-request.
we are on it.
I am still experiencing this issue when trying to submit my projects. Would you like for me to open a new issue? Edit: Here are some pics of my console for accessing site, going to current challenge, and then submitting the challenge: ! !
Hi Kelsie, Thanks for reporting. Yes, please open a fresh issue.

componentDidMount() { this.props.updateProjectForm({}); } <del> componentDidUpdate() { this.props.updateProjectForm({}); } componentWillUnmount() { this.props.updateProjectForm({}); } </del> handleSubmit(values) { this.props.updateProjectForm(values); this.props.onSubmit();


Question:
When you sign in or change an option on settings, you get an alert banner up top. It could be a little thinner so it doesn't cut so close to the body elements <img width="1420" alt="Learn_freeCodeCamp_org" src="https://user-"
should we go all the way? <img width="1198" alt="Screen Shot 2019-10-19 at 12 39 56 AM" src="https://user-"
The layout element needs to be pushed below the notification. Currently it overlays on top of it.
Should I work on it?
Yes please. Note the the notification should be shorter in height and should also be "injected" in-between the nav and the layout instead of overlaying.

justify-content: space-around; flex-direction: row-reverse; margin-bottom: 0px; <ins> padding-top: 3px; padding-bottom: 3px; </ins> position: fixed; width: 100%; z-index: 1000;


Question:
When you mouse over the signin buttons on the buttons do not show the pointer cursor. They just show the default cursor. These buttons should show the cursor pointer like all the other buttons on freeCodeCamp.
Should I work on this? if allows
go ahead please.

border-color: var(--secondary-color); background-color: var(--secondary-color); color: var(--secondary-background); <ins> cursor: pointer; </ins> } .btn:active,


Question:
Steps to reproduce: to your credit card information and hit submit transaction will not go through (won't show up in Stripe) and you'll get a blank page like this: <img width="1427" alt="Supportournonprofit_freeCodeCamp_org" src="https://user-"
reproducible on master
I am aware of this issue, working on it.

<del> /* * Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved. * Microsoft Open Technologies would like to thank its contributors, a list * of whom are at http://rx.codeplex.com/wikipage?title=Contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); you * may not use this file except in compliance with the License. You may * obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing permissions * and limitations under the License. */ import debugFactory from 'debug'; import { noop, Observable, throwError } from 'rxjs'; import { map } from 'rxjs/operators'; import { isGoodXHRStatus } from './'; const debug = debugFactory('fcc:ajax$'); const root = typeof window !== 'undefined' ? window : {}; // Gets the proper XMLHttpRequest for support for older IE function getXMLHttpRequest() { if (root.XMLHttpRequest) { return new root.XMLHttpRequest(); } else { var progId; try { var progIds = [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0' ]; for (var i = 0; i < 3; i++) { try { progId = progIds[i]; if (new root.ActiveXObject(progId)) { break; } } catch (e) { // purposely do nothing noop.noop(e); } } return new root.ActiveXObject(progId); } catch (e) { throw new Error('XMLHttpRequest is not supported by your browser'); } } } // Get CORS support even for older IE function getCORSRequest() { var xhr = new root.XMLHttpRequest(); if ('withCredentials' in xhr) { return xhr; } else if (root.XDomainRequest) { return new root.XDomainRequest(); } else { throw new Error('CORS is not supported by your browser'); } } function parseXhrResponse(responseType, xhr) { switch (responseType) { case 'json': { if (isGoodXHRStatus(xhr.status)) { if ('response' in xhr) { return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null'); } else { return JSON.parse(xhr.responseText || 'null'); } } else { return null; } } case 'xml': return xhr.responseXML; case 'text': default: return 'response' in xhr ? xhr.response : xhr.responseText; } } function normalizeAjaxSuccessEvent(e, xhr, settings) { return { response: parseXhrResponse(settings.responseType || xhr.responseType, xhr), status: xhr.status, responseType: xhr.responseType, xhr: xhr, originalEvent: e }; } function createNormalizeAjaxErrorEvent(options) { let _body = {}; let _endpoint = ''; if (typeof options === 'string') { _endpoint = options; } else { _body = options.body; _endpoint = options.url; } return (e, xhr, type) => ({ _body, _endpoint, type: type, status: xhr.status, xhr: xhr, originalEvent: e }); } /* * Creates an observable for an Ajax request with either a settings object * with url, headers, etc or a string for a URL. * * @example *   source = Rx.DOM.ajax('/products'); *   source = Rx.DOM.ajax( url: 'products', method: 'GET' }); * * interface Options { *   url: String, // URL of the request *   body?: Object, // The body of the request *   method? = 'GET' : 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE', *   async? = true: Boolean, // Whether the request is async *   headers?: Object, // optional headers *   crossDomain?: true // if a cross domain request, else false * } * * ajax$(url?: String, options: Options) => Observable[XMLHttpRequest] */ export function ajax$(options) { var settings = { method: 'GET', crossDomain: false, async: true, headers: {}, responseType: 'text', createXHR: function() { return this.crossDomain ? getCORSRequest() : getXMLHttpRequest(); }, normalizeError: createNormalizeAjaxErrorEvent(options), normalizeSuccess: normalizeAjaxSuccessEvent }; if (typeof options === 'string') { settings.url = options; } else { for (var prop in options) { if (hasOwnProperty.call(options, prop)) { settings[prop] = options[prop]; } } } const { normalizeError, normalizeSuccess } = settings; if (!settings.crossDomain && !settings.headers['X-Requested-With']) { settings.headers['X-Requested-With'] = 'XMLHttpRequest'; } settings.hasContent = typeof settings.body !== 'undefined'; return new Observable.create(function(observer) { var isDone = false; var xhr; const throwWithMeta = err => { err._body = options.body || {}; err._endpoint = options.url; observer.error(err); }; var processResponse = function(xhr, e) { var status = xhr.status === 1223 ? 204 : xhr.status; if ((status >= 200 && status <= 300) || status === 0 || status === '') { try { observer.next(normalizeSuccess(e, xhr, settings)); observer.complete(); } catch (err) { throwWithMeta(err); } } else { observer.error(normalizeError(e, xhr, 'error')); } isDone = true; }; try { xhr = settings.createXHR(); } catch (err) { throwWithMeta(err); } try { if (settings.user) { xhr.open( settings.method, settings.url, settings.async, settings.user, settings.password ); } else { xhr.open(settings.method, settings.url, settings.async); } var headers = settings.headers; for (var header in headers) { if (hasOwnProperty.call(headers, header)) { xhr.setRequestHeader(header, headers[header]); } } if (!xhr.upload || (!('withCredentials' in xhr) && root.XDomainRequest)) { xhr.onload = function(e) { if (settings.progressObserver) { settings.progressObserver.next(e); settings.progressObserver.complete(); } processResponse(xhr, e); }; if (settings.progressObserver) { xhr.onprogress = function(e) { settings.progressObserver.next(e); }; } xhr.onerror = function(e) { if (settings.progressObserver) { settings.progressObserver.error(e); } observer.error(normalizeError(e, xhr, 'error')); isDone = true; }; xhr.onabort = function(e) { if (settings.progressObserver) { settings.progressObserver.error(e); } observer.error(normalizeError(e, xhr, 'abort')); isDone = true; }; } else { xhr.onreadystatechange = function(e) { if (xhr.readyState === 4) { processResponse(xhr, e); } }; } debug('ajax$ sending content', settings.hasContent && settings.body); xhr.send((settings.hasContent && settings.body) || null); } catch (err) { throwWithMeta(err); } return function() { if (!isDone && xhr.readyState !== 4) { xhr.abort(); } }; }); } // Creates an observable sequence from an Ajax POST Request with the body. // post$(url: String, body: Object) => Observable[Any] export function post$(url, body) { try { body = JSON.stringify(body); } catch (e) { return throwError(e); } return ajax$({ url, body, method: 'POST' }); } // postJSON$(url: String, body: Object) => Observable[Object] export function postJSON$(url, body) { try { body = JSON.stringify(body); } catch (e) { return throwError(e); } return ajax$({ url, body, method: 'POST', responseType: 'json', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, normalizeError: (e, xhr) => parseXhrResponse('json', xhr) }); } // Creates an observable sequence from an Ajax GET Request with the body. // get$(url: String) => Obserable[Any] export function get$(url) { return ajax$({ url: url }); } /** * Creates an observable sequence from JSON from an Ajax request * * @param {String} url The URL to GET * @returns {Observable} The observable sequence which contains the parsed JSON */ // getJSON$(url: String) => Observable[Object]; export function getJSON$(url) { return ajax$({ url: url, responseType: 'json', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, normalizeError: (e, xhr) => parseXhrResponse('json', xhr) }).pipe(map(({ response }) => response)); } </del>


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: I can't get the challenge to pass even when I use the solution from the get a hint page. Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: firefox Browser Version: 69.0.3 (64-bit) Operating System: linux mint 19 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !
I can reproduce this with same Firefox version. On latest Chrome, it is working well.
ok, so I can get it to work in chrome. but still not in firefox for me.
Seems like a bug with firefox - I get this this error... <img width="357" alt="Screen Shot 2019-10-20 at 9 13 36 AM" src="https://user-"should be a valid flag. So that's why the solution passed our tests, but is failing in firefox. This will be a problem anywhere else we used the flag. Fortunately, it's not something that is used in many other places, if any.
Open bug report on Bugzilla about the flag - Doesn't look like it will be implemented anytime soon.

- text: Your code should not rely on any kind of loops (for or while or higher order functions such as forEach, map, filter, or reduce.). testString: assert(!removeJSComments(code).match(/for|while|forEach|map|filter|reduce/g)); - text: You should use recursion to solve this problem.  testString: assert(removeJSComments(sum.toString()).match(/sum(.*).*{.*sum(.*).*}/s));   testString: assert(removeJSComments(sum.toString()).match(/sum(.*)/g).length > 1);  ```


Question:
!
Hi, this could be resolved by removing the width of the -class. Should I do that and create a PR?
You should check locally if the fix will have any unintended side effects, of course a PR is welcome. Thanks.
I changed the to so the progress reports still align on mobile screens.

.map-title-completed { margin-left: auto; <del> width: 100px; </del> <ins> min-width: 100px; </ins> padding-left: 20px; }


Question:
Describe the bug When we accept the academic honesty policy and hover over the text, it feels like a button. The cursor should be auto. To Reproduce Steps to reproduce the behavior: to the settings page sure you have accepted academic honesty policy over "you have accepted academic honesty" button Desktop (please complete the following information): OS: Windows 10 Pro 32 Bit Pro Browser: Chrome Version: 77.0.3865.90
, we can make this button disabled, no? I tried it and it seems good, as it is a button but doesn't have to be clicked again..
Please feel free to make a PR.. Here are the lines that you probably need to touch: [ ] The panel can be a button and disabled. [ ] We would need some tests for these as well. Thanks.
Please follow our
Sure, I'll do it as soon as I can, after work.
I went ahead and created a PR for this, along with unit test. Hope it's fine.

); renderIsHonestAgreed = () => (  <Panel bsStyle='info' className='agreed btn'>   <Button block={true} bsStyle='primary' className='disabled-agreed' disabled={true} >
You have accepted our Academic Honesty Policy.
  </Panel>   </Button>  ); render() {

<ins> /* global expect jest */ import React from 'react'; import ShallowRenderer from 'react-test-renderer/shallow'; import TestRenderer from 'react-test-renderer'; import Honesty from './Honesty'; import { Button } from '@freecodecamp/react-bootstrap'; describe('<Honesty />', () => { const renderer = new ShallowRenderer(); const updateIsHonestMock = jest.fn(); test('<Honesty /> snapshot when isHonest is false', () => { const componentToRender = ( <Honesty isHonest={false} updateIsHonest={updateIsHonestMock} /> ); const component = renderer.render(componentToRender); expect(component).toMatchSnapshot('Honesty'); }); test('<Honesty /> snapshot when isHonest is true', () => { const componentToRender = ( <Honesty isHonest={true} updateIsHonest={updateIsHonestMock} /> ); const component = renderer.render(componentToRender); expect(component).toMatchSnapshot('HonestyAccepted'); }); test('should call updateIsHonest method on clicking agree button', () => { const root = TestRenderer.create( <Honesty isHonest={false} updateIsHonest={updateIsHonestMock} /> ).root; root.findByType(Button).props.onClick(); expect(updateIsHonestMock).toHaveBeenCalledWith({ isHonest: true }); }); }); </ins>

 // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`<Honesty /> <Honesty /> snapshot when isHonest is false: Honesty 1`] = `
 <SectionHeader> Academic Honesty Policy </SectionHeader> <FullWidthRow> <Uncontrolled(Panel) className="honesty-panel" > <HonestyPolicy /> </Uncontrolled(Panel)>
 <Button active={false} block={true} bsClass="btn" bsStyle="primary" disabled={false} onClick={[Function]} > Agree </Button> </FullWidthRow>
 `; exports[`<Honesty /> <Honesty /> snapshot when isHonest is true: HonestyAccepted 1`] = `
 <SectionHeader> Academic Honesty Policy </SectionHeader> <FullWidthRow> <Uncontrolled(Panel) className="honesty-panel" > <HonestyPolicy /> </Uncontrolled(Panel)>
 <Button active={false} block={true} bsClass="btn" bsStyle="primary" className="disabled-agreed" disabled={true} >
 You have accepted our Academic Honesty Policy.
 </Button> </FullWidthRow>
 `;

padding-top: 15px; } <del> .honesty-policy .agreed { display: flex; justify-content: center; align-items: center; background-color: var(--quaternary-color); color: #fff; } div .agreed p { color: white; } .honesty-policy .agreed p { </del> <ins> .honesty-policy .disabled-agreed p { </ins> margin-top: 0; margin-bottom: 0; }


Question:
Describe the bug When viewing any challenge in Firefox, I can scroll in the instructions/theory part of the window, but the scrolling does not work in the code editor. I have tried with an external mouse as well as with the Trackpad in my Mac. In the same computer and with the same devices it works perfectly using Chrome. To Reproduce to any challenge. to scroll inside the code editor. does not work. Expected behavior It should scroll. Desktop: macOS 10.14.6 Mozilla Firefox 69.0.3 Additional context So far, to scroll in Firefox I have to click and drag the side scrolling bar in order to navigate the code. I think I'm only having this issue since the last redesign, but I may be wrong on this.
I've noticed this for quite a while - but I don't recall if it was present before the latest redesign.
I am also experiencing this problem as of the update. Windows 10 desktop Firefox 69.0.3 External mouse with a scroll wheel In order to scroll I have to find the very small and hard to see scroll bar inside the code editor and click+drag
Having the same issue as you Might take a dig in the code/inspector and see what's up.
It looks like a possible bug with the monaco editor (we are using monaco-editor": "^0.17.1") I confirmed the bug locally first and I then updated to the latest version of monaco and the scroll works again in Firefox. So it has been fixed. I'm just not sure how involved it is for us to update the editor?
Thanks for digging into this and finding the updates. I think we should be able to update monaco-editor itself which we have as a dep: But the issue right now is to confirm if react-monaco-editor is going to play along as well: I think I could not bump it last time I was trying to update it. Opening up for investigation and fix. A PR is most welcome, or any pointers are welcome as well.
I am also experiencing this problem after the update. MacOS 10.14.6 Firefox 69.0.3 Both external mouse with a scroll wheel and Macbook Pro trackpad cannot scroll the code window however Chrome and Safari browser does not have this problem.
I was able to update to both and . I updated react-monaco to 0.18.1 and react-monaco-editor to 0.31.0, did a few challenges locally and didn't see any immediate issues from the editor update. A PR would just be a chore update to and package- correct?
Thanks for reporting, please use the voting feature instead of confirming further. We know this is a confirmed bug, more so in an underlying library that we have little control over. We are working on a solution. Keeping the thread free for solutions will help.
Yes please. You are the rockstar.

"integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "monaco-editor": { <del> "version": "0.17.1", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.17.1.tgz", "integrity": "sha512-JAc0mtW7NeO+0SwPRcdkfDbWLgkqL9WfP1NbpP9wNASsW6oWqgZqNIWt4teymGjZIXTElx3dnQmUYHmVrJ7HxA==" </del> <ins> "version": "0.18.1", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.18.1.tgz", "integrity": "sha512-fmL+RFZ2Hrezy+X/5ZczQW51LUmvzfcqOurnkCIRFTyjdVjzR7JvENzI6+VKBJzJdPh6EYL4RoWl92b2Hrk9fw==" </ins> }, "monaco-editor-webpack-plugin": { "version": "1.7.0",

} }, "react-monaco-editor": { <del> "version": "0.30.1", "resolved": "https://registry.npmjs.org/react-monaco-editor/-/react-monaco-editor-0.30.1.tgz", "integrity": "sha512-3u/omC0ZGISievdFTfhhR8L3iRxCrTh39aiD5ged82NGFo4CfExRWoj/QBDp/jXS/UhNaurUsrnR1r+SEmrjuw==", </del> <ins> "version": "0.31.0", "resolved": "https://registry.npmjs.org/react-monaco-editor/-/react-monaco-editor-0.31.0.tgz", "integrity": "sha512-hU7YXEV2oer1xrRw+wwRi1NuPfUvBbwcU5Ft1XTBdktFnsRd0eK3xgy82zis7B6PaK0mKeI/CP5GiWz+EPYDFg==", </ins> "requires": { "@types/react": "^16.9.2", "prop-types": "^15.7.2" }, "dependencies": { "@types/react": { <del> "version": "16.9.2", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.2.tgz", "integrity": "sha512-jYP2LWwlh+FTqGd9v7ynUKZzjj98T8x7Yclz479QdRhHfuW9yQ+0jjnD31eXSXutmBpppj5PYNLYLRfnZJvcfg==", </del> <ins> "version": "16.9.9", "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.9.tgz", "integrity": "sha512-L+AudFJkDukk+ukInYvpoAPyJK5q1GanFOINOJnM0w6tUgITuWvJ4jyoBPFL7z4/L8hGLd+K/6xR5uUjXu0vVg==", </ins> "requires": { "@types/prop-types": "*", "csstype": "^2.2.0"

} }, "react-is": { <del> "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==" </del> <ins> "version": "16.10.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz", "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==" </ins> } } },

"react-hotkeys": "^2.0.0", "react-identicons": "^1.1.7", "react-instantsearch-dom": "^6.0.0-beta.0", <del> "react-monaco-editor": "^0.30.1", </del> <ins> "react-monaco-editor": "^0.31.0", </ins> "react-redux": "^5.0.7", "react-reflex": "^3.0.18", "react-responsive": "^6.1.1",


Question: Add a URL to the linkedIn input in your settings When viewing while logged in to your account... <img width="208" alt="Screen Shot 2019-10-23 at 11 05 37 AM" src="https://user-"Not logged in to your own account... <img width="195" alt="Screen Shot 2019-10-23 at 11 05 33 AM" src="https://user-"I can reproduce this on firefox and chrome, and locally and production.

const allUser = { ..._.pick(user, publicUserProps), isGithub: !!user.githubProfile, <del> isLinkedIn: !!user.linkedIn, </del> <ins> isLinkedIn: !!user.linkedin, </ins> isTwitter: !!user.twitter, isWebsite: !!user.website, points: progressTimestamps.length,


Question: Hello. I noticed that the modals containing the user solution of the resolved corresponding certification challenge are not vertically scrollable when they should be so. A .modal{overflow:auto} css rule should be in the main stylesheet file of freecodecamp or the user-settings-section's one (if there is any), so modals become scrollable when they are full of text that they stretch beyond the viewport. here is a screenshot of the issue: !

.table > tfoot > tr > td { border: none; } <ins> .modal { overflow-y: auto; } </ins>


Question:
The File Metadata Microservice project as part of the APIs and Microservices projects has inconsistent instructions. On the freeCodeCamp project URL: There are two user stories: I can submit a FormData object that includes a file upload. When I submit something, I will receive the file size in bytes within the JSON response. However, on the Glitch project it says: I will receive the file name, and size in bytes within the JSON response. When you try the sample Glitch project, it actually returns a JSON response with the name, file type, and size. I'd be happy to do a PR to fix this, but I wasn't sure how to best address these inconsistencies.
Thanks for bringing up this issue. I have not completed this myself, but based on the example Glitch and the boiler plate repository, I say we should update the site to be consistent with the rest. In other words, we should update the user story in with If there are any concerns, feel free to comment.
, there are many inconsistancies between the latter projects and lessons, and the tests. I suggest we open a new issue thread as a todo, and compile all of the miss-alignments. Specifically, I struggled to go through the Advanced Node and Express lessons, because of poorly done tests, and the versions not being kept up to date.
thanks for chiming in. I haven't gone through them yet so I can't be sure. I can close this issue and open a new issue for tracking inconsistencies with the five projects in "APIs and Microservices Projects". Are there any other project groups that have inconsistencies we should focus on?
Are there any other project groups that have inconsistencies we should focus on? Other than, the Information Security and Quality Assurance projects not having tests at all, no. The issue is more-so in the lessons. Over half of Advanced Node and Express do not pass without looking at the tests.
"Over half of Advanced Node and Express do not pass without looking at the tests." Is this still the case now that we've moved from Glitch to If so, would you be interested in helping us improve the instructions to make these less ambiguous?
As far as I am aware, there are still issues in the following lessons: Create New Middleware, Logging a User Out, Registration of New Users, and Authentication with I do have a PR that should solve all of the current issues around this section. It links to an updated boilerplate, as well:

```yml tests: <del> - text: I can submit a FormData object that includes a file upload. </del> <ins> - text: I can submit a form that includes a file upload. </ins> testString: '' <del> - text: 'When I submit something, I will receive the file size in bytes within the JSON response.' </del> <ins> - text: The form file input field has the <code>name</code> attribute set to <code>upfile</code>. testString: '' - text: When I submit something, I will receive the file <code>name</code>, <code>type</code>, and <code>size</code> in bytes within the JSON response. </ins> testString: '' ```


Question:
I'm doing some practice at the link below but when I pressed "Run The Test" button the webpage froze Browser Name: Firefox Browser Version: 70.0 Operating System: Linux Mint 18.3 (Sylvia) !
When it happens: The issue happens if the test isn't done correctly, that is, if the padding of .red-box is not equal to 1.5em. If you set the padding to anything other than 1.5em or don't set the padding at all, the page freezes with some process running on an infinite loop probably (my laptop's fan started to turn on full speed). Can be reproduced on the following browsers: Browser Name: Google Chrome Browser Version: 78.0.3904.70 (Official Build) (64-bit)Browser Name: Chromium Browser Browser Version: 78.0.3904.70 (Official Build) snap (64-bit)Browser Name: Brave Browser Browser Version: 0.69.135 Chromium: 77.0.3865.120 (Official Build) (64-bit)Browser Name: Firefox Browser Version: 70.0 (64-bit) Canonical Operating System: Ubuntu 19.10
Definitely a regex issue -- pasting it into results in catastrophic backtracking. My first guess is the capture group just goes to infinity, happy to take a closer look.
I already made sure I put the padding with 1.5em within the red-box css class
Then there might be another issue, but when I tested, the issue only happened when the padding wasn't equal to 1.5em. If it was equal to 1.5em, the test passed and the modal with the save progress and go to next challenge came up and worked correctly.
This could be helped with landing, but the current automated challenge test suite needs to be replaced for the PR to be accepted. A potential solution is coming, but time estimates are long.
How does PR close this issue?
Not sure, go give it a test. My browser crashed on production and didn't when looking at this PR.
fixes a bad capture group in the regex for the solution test that was capable of causing stack overflow

- text: Your red-box class should have a padding property. testString: assert($('.red-box').css('padding-top') != '0px' && $('.red-box').css('padding-right') != '0px' && $('.red-box').css('padding-bottom') != '0px' && $('.red-box').css('padding-left') != '0px'); - text: Your red-box class should give elements 1.5em of padding.  testString: assert(code.match(/.red-boxs*?{(s|.)*?padding:s*?1.5em/gi));   testString: assert(code.match(/.red-boxs*?{[sS]*padding:s*?1.5em/gi));  ```


Question: I stumbled upon this issue when playing around with the challenge. If a user wanted to see what the output of the final variable (the converted version of the string) to the FCC console, it does not get rendered showing the converted entities. You can see in the screenshot below that the browser console has the correct values but the FCC console does not show the same thing. ! I am guessing there are several other challenges where the user would not see the HTML code and would instead send the rendered version in the FCC console.

getContext } from 'redux-saga/effects'; import { channel } from 'redux-saga'; <ins> import escape from 'lodash/escape'; </ins> import { challengeDataSelector,

function* logToConsole(channel) { yield takeEvery(channel, function*(args) { <del> yield put(updateLogs(args)); </del> <ins> yield put(updateLogs(escape(args))); </ins> }); }


Question: Describe the bug ! The input text on the darkmode version of the donate page () are not readable so you cannot see what you are typing. To Reproduce Steps to reproduce the behavior: to '' with darkmode enabled. on the input labled 'Your Card Number:' and enter some numbers. entered input is not readable as the color of the input text is the same as the background-color of the input. bug applies to the credit card expiration and CVC inputs. ! Desktop (please complete the following information): OS: Win10 Browser Brave/Chrome/Firefox

isSignedIn: PropTypes.bool, stripe: PropTypes.shape({ createToken: PropTypes.func.isRequired <del> }) </del> <ins> }), theme: PropTypes.string </ins> }; const initialState = { donationAmount: 500,

const mapStateToProps = createSelector( userSelector, isSignedInSelector, <del> ({ email }, isSignedIn) => ({ email, isSignedIn }) </del> <ins> ({ email, theme }, isSignedIn) => ({ email, theme, isSignedIn }) </ins> ); class DonateForm extends Component {

renderDonateForm() { const { isFormValid } = this.state; <ins> const { theme } = this.props; </ins> return ( <Row> <Col sm={10} smOffset={1} xs={12}>

value={this.getUserEmail()} /> </FormGroup> <del> <StripeCardForm getValidationState={this.getValidationState} /> </del> <ins> <StripeCardForm getValidationState={this.getValidationState} theme={theme} /> </ins> <Button block={true} bsStyle='primary'

import '../Donation.css'; const propTypes = { <del> getValidationState: PropTypes.func.isRequired </del> <ins> getValidationState: PropTypes.func.isRequired, theme: PropTypes.string </ins> }; const style = { base: { <del> color: '#0a0a23', </del> fontSize: '18px' } };

} render() { <ins> // set color based on theme style.base.color = this.props.theme === 'night' ? '#fff' : '#0a0a23'; </ins> return ( <div className='donation-elements'> <FormGroup>


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: For this challenge, the starting code in my editor contains the following lines: The challenge is Since the idea behind this challenge is the ability to combine conditions with the && operator, I would expect the starting code to instead read: Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Chrome Browser Version: 76.0.3809.100 Operating System: MacOS Sierra If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):' <img width="1408" alt="Screen Shot 2019-11-10 at 5 36 23 PM" src="https://user-"
The instructions tell you what to do regardless of the seed code. If the seed code was provided as you describe, it would not be much of a challenge to solve.
I think the point of the exercise is to demonstrate the usage of the && operator, so even though it's easier with my suggestion, it's not trivial. If you'd rather not give that hint, though, there's no reason for the nested if statements in the seed code, and I was confused by them. The seed code should read:
The point of the exercise is two-fold. One is to teach the user how to use the operator. The other is to have the user figure how to achieve the same logic with the operator as without the operator using the nested if statements. I do not see any reason to change this challenge. I will let the other collaborators/mods give their opinions on this issue.
I'm with on this one - I don't think the seed needs changing. I redid the challenge and found that the nested if statements were helpful. You can create the intermediate solution: if you're more comfortable with nested if statements and that will pass all but the first two tests. This allows you to confirm that you've got the logic right before refactoring it into a single conditional. The only thing I would consider changing is to since 'combine' slightly implies that the new statement is built out of the original two, which isn't really the case here. Doing that should make it less confusing without watering the task down.
Thanks I like your suggestion to change the wording to
Any interest in creating a PR for that
Thank you for the link

## Instructions
  Combine the two if statements into one statement which will return "Yes" if val is less than or equal to 50 and greater than or equal to 25. Otherwise, will return "No".   Replace the two if statements with one statement, using the && operator, which will return "Yes" if val is less than or equal to 50 and greater than or equal to 25. Otherwise, will return "No".
 ## Tests


Question: <!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: The Twitter image in this challenge is broken: If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): <img width="1431" alt="LearnCSSFlexboxUsethealign-itemsPropertyintheTweetEmbedfreeCodeCamp_org" src="https://user-"


Question:
The scrimba video for needs to be updated to match the updates made a while back.
Any update on this?
I want to do this kind of update, but I am not sure what accurate need to be updated. Could anyone explain more about that. Thanks.
Were you able to correct the video?
If there's no movement on creating a new video to update this, I'd be happy to take a crack at it.
I checked out the video and it seemed to be factually accurate. Is the video update just needing to match the condition of "Equal" or "Not Equal" like the actual problem is asking for?

id: 587d7b7e367417b2b2512b24 title: Use the Conditional (Ternary) Operator challengeType: 1 <del> videoUrl: 'https://scrimba.com/c/c3JRmSg' </del> forumTopicId: 301181 ---


Question:
At freeCodeCamp's current level of efficiency, every dollar donated to our nonprofit translates to 50 hours worth of learning. Both the One-time and Annual options have the correct amounts, but for some reason the monthly doesn't have the correct amount: $50 should be 25,000 hours: <img width="507" alt="SupportournonprofitfreeCodeCamporg" src="https://user-"$35 should be 1,750 hours: <img width="517" alt="SupportournonprofitfreeCodeCamporg" src="https://user-"$5 should be 250 hours: <img width="522" alt="Supportournonprofit_freeCodeCamp_org" src="https://user-"
~The hour is calculated for the month like we discussed? For example $5: ~ Edit: Never mind, I realised the issue. Will fix.

: defaultAmount[durationSelected] || this.amounts[durationSelected][0]; } <del> convertToTimeContributed(amount, duration) { const timeContributed = duration === 'month' ? Math.round(((amount / 100) * 50) / 12) : (amount / 100) * 50; return `${numToCommas(timeContributed)} hours`; </del> <ins> convertToTimeContributed(amount) { return `${numToCommas((amount / 100) * 50)} hours`; </ins> } getFormatedAmountLabel(amount) {

{`Your `} {this.getFormatedAmountLabel(donationAmount)} {` donation will provide `} <del> {this.convertToTimeContributed(donationAmount, duration)} </del> <ins> {this.convertToTimeContributed(donationAmount)} </ins> {` of learning to people around the world`} {duration === 'onetime' ? `.` : ` each ${duration}.`} </p>


Question: Currently the donate page always has the left-most value selected by default. Instead, we want the center value selected by default. For example, here we would want the 50 is selected by default): <img width="517" alt="Supportournonprofit_freeCodeCamp_org" src="https://user-"

: defaultAmount[durationSelected] || this.amounts[durationSelected][0]; } <del> convertToTimeContributed(amount, duration) { const timeContributed = duration === 'month' ? Math.round(((amount / 100) * 50) / 12) : (amount / 100) * 50; return `${numToCommas(timeContributed)} hours`; </del> <ins> convertToTimeContributed(amount) { return `${numToCommas((amount / 100) * 50)} hours`; </ins> } getFormatedAmountLabel(amount) {

{`Your `} {this.getFormatedAmountLabel(donationAmount)} {` donation will provide `} <del> {this.convertToTimeContributed(donationAmount, duration)} </del> <ins> {this.convertToTimeContributed(donationAmount)} </ins> {` of learning to people around the world`} {duration === 'onetime' ? `.` : ` each ${duration}.`} </p>


Question:
When in a challenge, any of modals that popup (completion, ask for help, etc..), have a little close button at the top right that has recently become very hard to see... !
Also, when you hover over it, it gets obscured by the hover effect: !
Seems like there's an opacity issue... <img width="698" alt="Screen Shot 2019-11-26 at 8 11 42 AM" src="https://user-"Removing that 1% opacity makes it look like it did before, but I can't pinpoint where it's coming from in the code.
Production or local?
The hover effect is visible in production and they are also a little hard to see.
please investigate.
table for reference...
Thanks for the confirmation. The latest master is now (as of this comment) live on .dev, if you want to confirm this issue is fixed. If yes, I will proceed with the deployment to .org
I have pushed further to production and can confirm that the issue is reproducible on both staging and production applications.
I have bumped this to crit path.

color: var(--secondary-color); } <del> .fcc-modal .close { color: var(--secondary-color); opacity: 100%; </del> <ins> button.close { color: inherit; background-color: transparent; </ins> font-size: 28px; <ins> opacity: 0.5; </ins> text-shadow: none; } <ins> button.close:hover, button.close:focus { color: inherit; opacity: 1; background-color: transparent; } </ins> .modal-content { background-color: var(--secondary-background); border-radius: 0px;

font-size: 20px; text-align: right; margin-right: 100px; <del> color: #fff; </del> <ins> color: var(--gray-00); } .certification-namespace .issue-date strong { color: var(--gray-00); </ins> } .certification-namespace .information {


Question: Describe the bug Unnecessary horizontal page scroll bar. It is not the scrollbar, its the page scroll bar. To Reproduce Steps to reproduce the behavior: to , it does not occur in all pages. for the page horizontal scrollbar (Not the scrollbar). Expected behavior No horizontal scroll bar. Screenshots  Desktop: I have no other env to test. OS: Ubuntu. Browser: chrome, chromium, firefox. Version: not applicable. Additional context This visual problem is generated by: Applied to:

import PropTypes from 'prop-types'; import { Link, graphql } from 'gatsby'; import Helmet from 'react-helmet'; <del> import { ListGroup, ListGroupItem } from '@freecodecamp/react-bootstrap'; </del> <ins> import { Grid, ListGroup, ListGroupItem } from '@freecodecamp/react-bootstrap'; </ins> import LearnLayout from '../../components/layouts/Learn'; import FullWidthRow from '../../components/helpers/FullWidthRow';

<Helmet> <title>{block} | freeCodeCamp.org</title> </Helmet>
   <Grid className='intro-layout-container'>  <FullWidthRow> <div className='intro-layout'

{allChallengeNode ? renderMenuItems(allChallengeNode) : null} </ListGroup> </FullWidthRow> <del> </div> </del> <ins> </Grid> </ins> </LearnLayout> ); }


Question:
The GIF depicts fCC in its old design. Even though I don't think there's anything wrong with it, I guess it should be updated to align with how fCC looks now !
Hi, I'll work on this
Just submit a PR when you are ready.
When I click the "sign-in" button on the homepage, I see this screen - ! Is this the expected behavior? Should I be creating a GIF of this?
Yes, this is expected behavior.

Simply clicking the `Preview Custom 404 Page` button will forward you to the correct page. <del> ![Image - How to sign in when working locally](https://user-images.githubusercontent.com/1884376/52650951-48922e80-2f11-11e9-9eee-360a25ad28ad.gif) </del> <ins> ![Image - How to sign in when working locally](https://user-images.githubusercontent.com/29990697/71541249-f63cdf00-2923-11ea-8a85-cefb6f9c9977.gif) </ins> ## Quick commands reference when working locally


Question: Please see below screenshot. The Algorithms and Data Structures certification has an extra "certification" in it: <img width="1277" alt="2NotificationsTwitter" src="https://user-"We should also check the other 10 certifications to make sure the variable text does not contain the word "certification" at the end of it, since that is already part of the certification template.

has successfully completed the freeCodeCamp.org

  {certTitle} Certification   {certTitle}

 Developer Certification, representing approximately{' '}


Question:
Currently when clicking the freeCodeCamp logo in the navbar while on /learn it takes me to the landing page: Instead, clicking the logo on the navbar should take me to /learn. Aside from your first time arriving at / there is never a reason to be taken back there.
I made a PR here, although I'm not sold on the function. I agree that nobody will need to go back to the home page, but it seems a little unintuitive to have it go to when a home page exists.

<SearchBar innerRef={searchBarRef} />

  <Link id='universal-nav-logo' to='/'>   <Link id='universal-nav-logo' to='/learn'>  <NavLogo /> freeCodeCamp.org </Link>


Question: The markdown text was pasted in directly. As a result, the link to GuideStar doesn't work. <img width="1142" alt="Supportournonprofit_freeCodeCamp_org" src="https://user-"Here's the file:

<p> We earned the 2019 Platinum Seal of Transparency from Guidestar.org. You can view all our nonprofit's details and download our accounting <del> documents [there](https://www.guidestar.org/profile/82-0779546). </del> <ins> documents{' '} <Link to='https://www.guidestar.org/profile/82-0779546'>there.</Link> </ins> </p> <Spacer />


Question:
Describe the bug The popup modal for becoming a sponsor cannot be closed by just using the keyboard. To Reproduce Steps to reproduce the behavior: some challenges which triggers the modal Expected behavior The modal closes when pressing the Esc key The modal closes when clicking somewhere outside of the modal I can navigate to the "Ask me later" button with the tab key to close the modal Screenshots ! Desktop (please complete the following information): OS: Ubuntu Browser: chrome and firefox Version: Latest Smartphone (please complete the following information): Unknown
This is by design to the best of my knowledge. I would defer to Quincy for a confirmation.
Thanks for reporting that the "ask me later" link should be accessible by tab but you're correct - it isn't. We will fix this. We decided not to have escape key / clicking outside of the modal to dismiss this modal (like we do with other modals) since the goal is to get people to actually slow down and consider donating to our nonprofit - not to just mash the escape key.

font-size: 1.5rem; } <ins> .donation-modal .btn-link:focus { outline-width: 1px; outline-style: solid; } </ins> @media screen and (max-width: 991px) { .donation-icon-container { margin: 30px;

bsStyle='primary' className='btn-link' onClick={closeDonationModal} <ins> tabIndex='0' </ins> > {closeLabel ? 'Close.' : 'Ask me later.'} </Button>


Question: Thanks for reporting. I created a PR to resolve the issue. Once it gets reviewed/merged, a user will be able to put the properties in any order (as it should be).

- text: Your code should use the map method. testString: assert(code.match(/.map/g)); - text: ratings should equal [{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}].  testString: assert(JSON.stringify(ratings) === JSON.stringify([{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}]));   testString: assert.deepEqual(ratings, [{"title":"Inception","rating":"8.8"},{"title":"Interstellar","rating":"8.6"},{"title":"The Dark Knight","rating":"9.0"},{"title":"Batman Begins","rating":"8.3"},{"title":"Avatar","rating":"7.9"}]);  ```


Question:
In this challenge ,if i use space between , the following ouptut genrates. (code) (output) However,if i remove the space , there is no error in the console. So i crosscheck this problem in my local system and found that space does't generate the error.
. It should allow a space there with the following... assert((/(var//)/g)); The code that needs to be is highlighted.

- text: You should remove the ES5 assignment syntax. testString: assert(!code.match(/highToday = HIGH_TEMPERATURES.today/g) && !code.match(/highTomorrow = HIGH_TEMPERATURES.tomorrow/g)) - text: You should use destructuring to create the highToday variable.  testString: assert(code.match(/(var|const|let)s*{s*(today:s*highToday[^}]*|[^,]*,s*todays*:s*highTodays*)}s*=s*HIGH_TEMPERATURES(;|s+|//)/g));   testString: assert(code.match(/(var|const|let)s*{s*(todays*:s*highToday[^}]*|[^,]*,s*todays*:s*highTodays*)}s*=s*HIGH_TEMPERATURES(;|s+|//)/g));  - text: You should use destructuring to create the highTomorrow variable.  testString: assert(code.match(/(var|const|let)s*{s*(tomorrow:s*highTomorrow[^}]*|[^,]*,s*tomorrows*:s*highTomorrows*)}s*=s*HIGH_TEMPERATURES(;|s+|//)/g));   testString: assert(code.match(/(var|const|let)s*{s*(tomorrows*:s*highTomorrow[^}]*|[^,]*,s*tomorrows*:s*highTomorrows*)}s*=s*HIGH_TEMPERATURES(;|s+|//)/g));  ```


Question:
Describe the bug Using the search-Field and clicking "See all results ..." To Reproduce Steps to reproduce the behavior: to '' on 'Search Field' and enter s.th. I did "Flutter" and then I clicked "See all results for Flutter" error: "404 Page not found" I think the error is easy to fix: The automatic created result link after clicking has double "news"-part: if I manually remove one "news" as the result would be the correct one.
Thanks for the report! It seems it's a problem with redirection. redirects to and the link is to which redirects to cc:
Thank you for reporting this This was also a problem on /news. I deployed a quick fix and am working on PRs now. I noticed that we could change the URLs in the search related files from to This seems to get around the problematic redirect, at least for search results. Still an issue we need to investigate further for other use cases.
search is still broken? I can't get anything to load for generic searches.
what sort of generic searches are not loading for you? Things seem to be working on my end whether I search from .org/ or .news/.
working on my side on news and learn from multiple locations for the initial test case.
!
Should it say something like "No results for for 'this is a generic search', please try a different query"?
Thanks for the gif, I see what you mean now. The behavior should be a message that says "No tutorials found" and not to allow the search to complete. There's a PR for this on News , and I'll start working on the implementation in the main repo.
I am going close this since the above prs address the issue. Feel free to reopen if you think this issue has been closed by mistake.
Has the fix landed on production. I am able to reproduce the issue?
has not landed yet on learn. but you could see the fix on /news
The query string is passed on to the news application. URL is available on the GIF that I sent.
we deployed the updated theme to News, so you shouldn't be able to enter a long string there and hit the search results page. Once the fix to Learn is deployed you won't be able to pass long strings with no hits to News like in the GIF.
Quick follow up, is there anything that is preventing us from deploying?
sorry for the delay in deploying. We just got access to the client VM to clear out the old builds. We'll do that later today and get all these changes out.
Great, thanks for confirming. Apologies I have the keys to the VMs a couple days ago. I missed letting you know. I have also cleared the older builds. You should be able to simply run a build. Thanks.
No worries man. Thank you for adding our keys. We should have checked to see if we had access yet. We're just about to go in now and run a build.
This fix has been deployed. The problem in the gif above should no longer be possible on or

// when non-empty search input submitted return query ? window.location.assign( <del> `https://freecodecamp.org/news/search/?query=${encodeURIComponent( </del> <ins> `https://www.freecodecamp.org/news/search/?query=${encodeURIComponent( </ins> query )}` )

onChange={this.handleChange} onFocus={this.handleFocus} onSubmit={this.handleSearch} <del> showLoadingIndicator={true} </del> <ins> showLoadingIndicator={false} </ins> translations={{ placeholder }} /> </ObserveKeys>

{ objectID: `default-hit-${searchQuery}`, query: searchQuery, <del> url: `https://freecodecamp.org/news/search/?query=${encodeURIComponent( </del> <ins> url: `https://www.freecodecamp.org/news/search/?query=${encodeURIComponent( </ins> searchQuery )}`, title: `See all results for ${searchQuery}`,

} href={ dropdownFooter <del> ? `https://freecodecamp.org/news/search/?query=${encodeURIComponent( </del> <ins> ? `https://www.freecodecamp.org/news/search/?query=${encodeURIComponent( </ins> hit.query )}` : hit.url


Question:
There is a difference in the font size and the margin between the text , on the home page () and the learn page (). Although you may not notice it on first glance but it disturbs the UI. The "sign in and get started" button on home page is also wider than the "sign in to save your progress button" on /learn page.
Hi Could you add some screenshots that demonstrate the problem you're describing?
Here are two screenshots from the landing and the /learn tab, before you're logged in. ! ! There is a difference with the button width being stretched to fit the container in the landing page, but not on the /learn page. There is a minor difference in the margin right below the 'Welcome' Header between the two pages.
I was talking about the change in margin between "Welcome to " and "Learn to code." on the lading page and the /learn page , and the width of the yellow Button on the two pages , as you can see in the screenshots shared by
Thanks for clarifying, and I'll open this up for PRs.
Implemented some changes. Please see screenshots <img width="1280" alt="Screenshot 2020-01-19 at 09 59 13" src="https://user-"<img width="1280" alt="Screenshot 2020-01-19 at 09 59 31" src="https://user-"

<Col sm={10} smOffset={1} xs={12}> <Spacer /> <h1 className='text-center big-heading'> <del> {name ? 'Welcome back, ' + name + '.' : 'Welcome to freeCodeCamp.org'} </del> <ins> {name ? `Welcome back, ${name}.` : `Welcome to freeCodeCamp.org`} </ins> </h1> <Spacer /> </Col>

#learn-app-wrapper h2.medium-heading { margin-bottom: 50px; <del> margin-top: 0px; </del> text-align: center; }

max-height: 100%; font-size: 27px; white-space: normal; <ins> width: 100%; </ins> } .default-layout {


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: I'm on the Regular Expressions: Check For Mixed Grouping of Characters. I was able to pass this checkpoint with a solution that doesn't meet the objectives of the assignment. I used the following code: With this code I match just “Roosevelt” which is only part of the name(s), yet I still pass the assignment. Add a Link to the page with the problem: With this code I match just “Roosevelt” which is only part of the name(s) we are supposed to match for this assignment, yet I still pass the assignment. Tell us about your browser and operating system: Browser Name: Chrome Browser Version: Version 79.0.3945.117 (Official Build) (64-bit) Operating System: Windows 10 pro If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):
I think that the regex you've written should pass the test. The part is a capturing group, so the regex will match or . The as a quantifier will match the above 0 or 1 times. This means that your regex will capture as well as Unless, I'm mistaken, I hope this helps :)
Apologies... Actually, I've re-read the instructions. I think you may be onto something.
Yeah, the problem is that it matches the string " Roosevelt". A simple solution would be to add another test that makes sure it fails if you use, say, "Frank Roosevelt".
Would like to have a crack at this
Go ahead and create a PR.
Had a go Please see

testString: myRegex.lastIndex = 0; assert(myRegex.test('Eleanor Roosevelt')); - text: Your regex myRegex should return false for the string Franklin Rosevelt testString: myRegex.lastIndex = 0; assert(!myRegex.test('Franklin Rosevelt'));  - text: Your regex myRegex should return false for the string Frank Roosevelt testString: myRegex.lastIndex = 0; assert(!myRegex.test('Frank Roosevelt'));  - text: You should use .test() to test the regex. testString: assert(code.match(/myRegex.test(s*myStrings*)/)); - text: Your result should return true.


Question: <!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: Project Euler 39 automated test for n=800 should expect 720, which is the correct answer [ [ 45, 336, 339 ], [ 72, 320, 328 ], [ 80, 315, 325 ], [ 120, 288, 312 ], [ 144, 270, 306 ], [ 180, 240, 300 ] ] Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Chrome Browser Version: 79.0.3945.130 (Official Build) (64-bit) Operating System: MacOS If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):

tests: - text: intRightTriangles(500) should return 420. testString: assert(intRightTriangles(500) == 420);  - text: intRightTriangles(800) should return 420. testString: assert(intRightTriangles(800) == 420);   - text: intRightTriangles(800) should return 720. testString: assert(intRightTriangles(800) == 720);  - text: intRightTriangles(900) should return 840. testString: assert(intRightTriangles(900) == 840); - text: intRightTriangles(1000) should return 840.

return n; } <del> intRightTriangles(1000); </del> <ins> console.log(intRightTriangles(500)); // 420 </ins> ``` </div>

```js <del> // solution required </del> <ins> // Original idea for this solution came from // https://www.xarg.org/puzzle/project-euler/problem-39/ function intRightTriangles(n) { // store the number of triangles with a given perimeter let triangles = {}; // a is the shortest side for (let a = 3; a < n / 3; a++) // o is the opposite side and is at least as long as a for (let o = a; o < n / 2; o++) { let h = Math.sqrt(a * a + o * o); // hypotenuse let p = a + o + h;  // perimeter if ((h % 1) === 0 && p <= n) { triangles[p] = (triangles[p] || 0) + 1; } } let max = 0, maxp = null; for (let p in triangles) { if (max < triangles[p]) { max = triangles[p]; maxp = p; } } return maxp; } </ins> ```


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: For Project Euler Problem 31 The questions asks "How many different ways can £(n) be made using any number of coins?" but the automated tests actually expect input n in pennies Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Chrome Browser Version: 79.0.3945.130 (Official Build) (64-bit) Operating System: MacOS If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):
Thanks for reporting this, it definitely should be pennies. PRs are welcome.

1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p). It is possible to make £2 in the following way: 1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p <del> How many different ways can £(n) be made using any number of coins? </del> <ins> How many different ways can n pence be made using any number of coins? </ins> </section> ## Instructions


Question:
Describe your problem and how to reproduce it: 1) Go to: 2) Find this text: "Improve this intro on GitHub." 3) Link to GitHub to improve the intro is broken Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Chrome Browser Version: 79 Operating System: Mac OS 10.13.6 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): ! !
I am not even sure why that last sentence is present. I think it is best if it is removed completely from the introduction. If you see anymore links like this, please add them to this issue, so someone can create a PR to fix them all at the same time.
What do you think about removing the link to the redux website (the first word in the intro)
I think for now, we can leave it alone. I think the discussion of external links should be on a separate issue (if there is not already an outstanding issue). I thought I had an open issue at one point about external links. It may have gotten closed at some point (can't remember why).
Hey guys , the same issue is happening in the React and Redux section, please check:

This series of challenges introduces how to use Redux with React. In a React Redux app, you create a single Redux store that manages the state of your entire app. Your React components subscribe to only the pieces of data in the store that are relevant to their role. Then, you dispatch actions directly from React components, which then trigger store updates. <del> Improve this intro on [GitHub](https://github.com/freeCodeCamp/learn/tree/master/src/introductions/front-end-libraries/react-and-redux/index.md). </del>

## Introduction to the Redux Challenges [Redux](https://redux.js.org/) is a predictable state container for JavaScript apps. It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. While you can use Redux with any view library, it's introduced here before being combined with React. <del> Improve this intro on [GitHub](https://github.com/freeCodeCamp/learn/tree/master/src/introductions/front-end-libraries/redux). </del>


Question: <!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --JavaScript Algorithms and Data Structures -Basic Algorithm Scripting: Slice and Splice problem description The instruction for this challenge says "The input arrays should remain the same after the function runs.". However, the solution where "arr2" has been changed was accepted. This is the solution that was accepted: Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Mozilla FIrefox Browser Version: 72.0.2 (64-bit) ! Operating System: Win 10 x64 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):

- text: All elements from the first array should be added to the second array in their original order. testString: assert.deepEqual(frankenSplice([1, 2, 3, 4], [], 0), [1, 2, 3, 4]); - text: The first array should remain the same after the function runs. <del> testString: assert(testArr1[0] === 1 && testArr1[1] === 2); </del> <ins> testString: frankenSplice(testArr1, testArr2); assert.deepEqual(testArr1, [1, 2]); </ins> - text: The second array should remain the same after the function runs. <del> testString: assert(testArr2[0] === "a" && testArr2[1] === "b"); </del> <ins> testString: frankenSplice(testArr1, testArr2); assert.deepEqual(testArr2, ["a", "b"]); </ins> ```


Question:
The top nav items on the forum and news does not open in a new tab. We would like the same functionality on learn for consistency.
Do we want all external links to navigate without opening a tab? A quick search suggests that all the links in the footer open new tabs, as do a couple in . I think it's better UX to leave tab opening to the user, but I thought I'd check.
If you decide to go ahead with this, I'd like to have a go at this
I think we want this to remain as is except for the navigation links up top on the navbar, which are the most used links on the platform. This is to make it consistent with the behaviour on forum and news. can you proceed and make the changes. This will likely affect some of the routing. I would like to test this before working on the client app for chinese curriculum.

role='menu' >
  <Link external={true} to='/news'>   <Link external={true} sameTab={true} to='/news'>  /news </Link>

  <Link external={true} to='/forum'>   <Link external={true} sameTab={true} to='/forum'>  /forum </Link>

const propTypes = { children: PropTypes.any, external: PropTypes.bool, <ins> sameTab: PropTypes.bool, </ins> to: PropTypes.string.isRequired }; <del> const Link = ({ children, to, external, ...other }) => { </del> <ins> const Link = ({ children, to, external, sameTab, ...other }) => { </ins> if (!external && /^/(?!/)/.test(to)) { return ( <GatsbyLink to={to} {...other}> {children} </GatsbyLink> ); <ins> } else if (sameTab && external) { return ( <a href={to} {...other}> {children} </a> ); </ins> } return (


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: I'd like to submit a suggestion for a clarification in the explanation used in the following lesson: The instructions in this lesson refer to variable which is defined as: The lesson describes this as being a 3d array: This is misleading as positionData is not a 3-dimensional array but a 2d array. A 3d array could not be mapped to a 2d representation like a table: A 3d array would have a structure like: I think this should be considered for rewording less it lead to a misunderstanding. Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Firefox Browser Version: 73.0.1 (64-bit) Operating System: Windows 10 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !
How about this... I would also get rid of the and sentence.
Good suggestion. I think this still conveys the author's intended message without potentially misleading the student's understanding of what constitutes a dimension in the context of an array. Edit: also agree WRT the - I don't think this adds anything enlightening.
If anyone wants to make a PR using Tom's suggestion, it would be very welcome.
I'd like to take this issue
Looks like has already created a PR for this issue.
Missed it

## Instructions
  The positionData variable holds a 3-dimensional (3D) array. Use a D3 method to find the maximum value of the z coordinate (the third value) from the arrays and save it in the output variable. Note
Fun fact - D3 can plot 3D arrays.   The positionData array holds sub arrays of x, y, and z coordinates. Use a D3 method to find the maximum value of the z coordinate (the third value) from the arrays and save it in the output variable.
 ## Tests