Question: def draw(self, number): drawn = [] if number >= len(self.contents): <del> return self.contents </del> <ins> drawn.extend(self.contents) self.contents = [] </ins> else: for i in range(number): drawn.append(

Faulty method of the class can expose itself only during function tests. Case when number of balls to draw is higher than number of balls in hat is not tested explicitly, but it can fail function test, as it includes such experiment. - - Depending on the number of balls to draw and number of balls in Hat: Remove the required number of balls randomly selected, from the Hat. If number of balls to draw is higher than the number of balls, return all the balls. Test for the method checks only the first case: The second behavior is not checked explicitly, but it's a part of the second sub-case in the function test. This creates situation where passing method test and failing function test, can suggest to camper that issue lies in the function. Example with faulty method: Error: Adding test to check second behavior of the method would make debugging easier for campers, as it would show more clearly where is the issue. No response n/a No response


Question: ```` - Additional information in the form of a note should be formatted `<strong>Note:</strong> Rest of note text...` <ins> - If multiple notes are needed, then list all of the notes in separate sentences using the format `<strong>Notes:</strong> First note text.  Second note text.`. </ins> - Use double quotes where applicable ## Formatting seed code

I have created this issue so we can come to a final conclusion about the best format of notes when they are to the or sections of a challenge file. Below are all the combinations I have seen scattered throughout the curriculum. There may be others, so please let me know and I will update the list. This only applies if there is a single note. For multiple notes (which in my opinion starts to get unnecessary), see later in this topic. Example 1: Example 2: Example 3: Example 4: Example 5: Example 6: Example 7: Regarding situations where two or more separate notes are , I have seen: Example 1: Example 2: Example 3: If everyone can cast a vote for their preference of both a single note and multiple notes, this will help us in deciding on one way and then we can update the Styling Guide for challenges in the documentation.
I will cast my vote as I prefer Example 7 for single notes, because it takes up less space and adds one additional space between the word and the content. I like Example 3 for multiple notes, because I like the to be bold.
I'll vote for number 6 for the single notes and number 3 for multiple notes. I don't really see the need for extra space between and whatever comes after it, a simple space is fine
Also to add on, perhaps we can have a background-color for all Note sections as we want users to pay attention to those sections particularly. Something like this: ! Color code used: #C9F8CF
This is the style guide contain freeCodeCamp's Brand colors: https://design-style- . We try to deviate as least as possible from this and I'm yet to see a major deviation
Also, the note is not the most important thing in the challenge. The actual instruction is. We don't want to highlight anything that is not relative to the instruction. Most of the time, these notes are FYIs.
I vote for example 6 and example 3, The says to use something in none of the examples for single notes, the output would be the same as example 2, I think - Also, the guide doesn't say anything about multi-notes
6 and 3.
I vote for example 6 in single notes and example 3 in multiple notes.
I think it is settled then.


Question: ```` - Additional information in the form of a note should be formatted `<strong>Note:</strong> Rest of note text...` <ins> - If multiple notes are needed, then list all of the notes in separate sentences using the format `<strong>Notes:</strong> First note text.  Second note text.`. </ins> - Use double quotes where applicable ## Formatting seed code

6 and 3. What do you think?
Agreed, with you all. Thanks. Please proceed with pull requests.
I would like to work on this. Is there a way to assign my name under the assignee? I am not able to do so
Hi Go ahead with PR. We cannot assign you the issue. It's unfortunately a limitation from GitHub. Feel free to make a PR. We usually allow the first open and valid PR to go in as a fix. Thanks.
The suggestion in the PR above says to make a multi-note different from the example - so I did some testing to see the outputs and thought I should share.<brthese codes.... <img width="570" alt="screen shot 2019-03-05 at 10 26 56 am" src="https://user-"produce the following...<br<img width="415" alt="screen shot 2019-03-05 at 10 27 51 am" src="https://user-"The first two here produce the same result (same as example 3 above)... I'm not sure I like that extra space in there - I suppose it's fine, but I made a few others to see if I could make it look more like how I think it should look. So basically, I'm saying, I'm having second thoughts on how we should do the multi-notes.
I found more cases for single note. Perhaps you can update the list Case 1: Case 2: Case 3: Case 4:
Are you going ahead with a PR to put it somewhere into the docs?
Are you converting them to the suggested style And have you come across many multi-notes?
In challenges like , we have this sentence: Note that property names with spaces in them must be in quotes (single or double). So, should that sentence also be converted to: or can we ignore such cases?
yes i am following the example 6 for single note (as voted) Have not come across multiple notes yet. Will re-check.
Good points. Maybe multiple notes should just be different sentences in the same style as for a single note. Which ends up looking like: <strongNote(s):</strongFirst note goes here. Second note which is a bit longer goes here. Third note which is the longest note of all goes here.


Question: ```` - Additional information in the form of a note should be formatted `<strong>Note:</strong> Rest of note text...` <ins> - If multiple notes are needed, then list all of the notes in separate sentences using the format `<strong>Notes:</strong> First note text.  Second note text.`. </ins> - Use double quotes where applicable ## Formatting seed code

That's a judgement call I think it could be converted. I would hold off on the mult-notes for a little bit - and if you're going to make a PR, it's probably best to try and keep it to maybe one section or so at a time, or maybe a few sections if there's only a couple files changed.
I have a doubt: in , Is the note section considered multi-note or single note? The note section has more than one sentence. Does it qualify as multi-note then?
That one looks like you could probably just put the two sentences together in a single note. Since they are so related. And we aren't sure yet what we want a multi-note to look like.
I agree if they are related a single paragraph note will be fine. However, if it gets to long it may be more difficult for the user to parse the information, and should then be broken up into individual lines. Any Notes section with more than one sentence should still be described as Notes My opinion on the multi-line notes - we should use markdown bullets. It may put a bit of space between items, but they are much simpler to manage when making changes to the markdown. They automatically insert line breaks after each item and don't require verbose HTML wrapping the text. Visually it also looks like a bulleted list. Spacing between bullets can be modified in CSS if needed. It's also easy to replace the bullet with numbers if the order of the note matters. Note vs Notes should be explicit, Note(s) is only useful if you expect someone to add a second Note and they will forget to update Note to Notes, something we should quickly catch in review with the requirement of multiple reviewers. After some conversation with I agree that it really doesn't make sense to have too many notes in a document - we should work to insert the notes into the curriculum, or provide a place for additional information that may not be directly related to the exercise but provide valuable insights/information/resources.
I believe the corresponding Guide article for the challenge is the place where extra information is supposed to go, to avoid cluttering up the challenge itself.
that may be the case but the way it's conveyed is not great IMO. The only link to the guide article is Get a Hint, something many won't click, especially if it's a fairly simple exercise.


Question: ```` - Additional information in the form of a note should be formatted `<strong>Note:</strong> Rest of note text...` <ins> - If multiple notes are needed, then list all of the notes in separate sentences using the format `<strong>Notes:</strong> First note text.  Second note text.`. </ins> - Use double quotes where applicable ## Formatting seed code

I also don't see the guide article at all when I search for the exercise title, something we should look into, unless that is by design.
I see guide links when searching for a lesson title (none of the links work right now) - perhaps you searched for a lesson where the guide article is still a stub, and they don't show up or something.
The search indexes have not been updated in over 12 months, so that could be part of this problem.
I just remember that Quincy prefers not to have links going to other places when a user is on the challenge. He believes the challenge should stand on its own or rely on previously introduced material as much as possible. We want people to stay on the challenge until they just can not, which is where the Get a Hint or Ask for Help buttons come into play.
So the single note structure was to the guide with the PR above. The multinote issue wasn't exactly concluded - do we want to continue the conversation? I'm thinking we can close this, and mods should just keep notes small when we can. And multinotes can just be combined into a single paragraph after a
I don't know how many multi-notes there actually are, but I say we just combine them like you suggest in the same paragraph. I can create a PR to reflect this. Then, as we come across the multi-notes, we can first figure out if there even needs to be a multi-note and then probably just make it a single paragraph. How does that sound?
A PR to describe this in the guide? Sure


Question: assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[0]?.style?.fontSize === '6rem'); ``` <del> Your `.hero-subtitle, .author, .quote, .list-header` selector should have a `font-size` set to `1.8rem`. </del> <ins> Your `.hero-subtitle, .author, .quote, .list-title` selector should have a `font-size` set to `1.8rem`. </ins> ```js assert(new __helpers.CSSHelp(document).getCSSRules('media')?.[2]?.cssRules?.[1]?.style?.fontSize === '1.8rem');

In [()] step it is written but in the html file there is no selector instead there is selector present. ( In [()] step it is written but in the html file there is no selector instead there is selector present. either change the to or remove the totally from the step to do. No response
Page File: the seed content doesn't have , and the step after it do include it as well. we should swap with This looks something that can be fixed by "first time" code contributors to this repository. Here is the file that you should be looking at to work on a fix: file: Please make sure you read , we prioritize contributors following the instructions in our guides. Join us in or if you need help contributing, our moderators will guide you through this. Sometimes we may get more than one pull requests. We typically accept the most quality contribution, followed by the one that is made first. Happy contributing.
I would like to work on this issue. Please assign this issue to me .
We don't give assignment unless to an old time contributor to the repo. Edit: sorry should have provided more info. There were times when people assigned an issue and didn't commit to it, because of that the guide mentions we don't assign people and seek quality and fast commits. Sorry if my original answer was uninformative. I hope you have a good day and happy coding.


Question: --- <del> The kitchen </del> <ins> Kitchen </ins> ### --feedback--

Description and question refers to the Here's the main office area. And over there, let me show you, that's the conference room. text. However the audio mentions let me show you in context of showing to the desk. n/a Audio used in task should match the description context. Or the other way around. No response n/a No response
Yes, this is a problem. None of the answers are correct. Here's how I'd fix it: change the option "the conference room" to "the desk". This should solve the problem. We could also: simplify the question to "What is Maria directing attention to?" simplify the example to "Here's the main office area. Let me show you to the conference room."
I am fine with the suggestion. You could use as the example. What do you think
Agreed I'm going to add the help wanted label.


Question: "invalid-protocol": "URL must start with http or https", "url-not-image": "URL must link directly to an image file", "use-valid-url": "Please use a valid URL" <ins> }, "certification": { "certifies": "This certifies that", "completed": "has successfully completed the freeCodeCamp.org", "developer": "Developer Certification, representing approximately", "executive": "Executive Director, freeCodeCamp.org", "verify": "Verify this certification at {{certURL}}", "issued": "Issued" </ins> } }

The certification files () have been uploaded to Crowdin for translation. However, the React Component itself does not use the translation helper for the text within the certification (such as ). The component and files should be updated to allow this.


Question:
## Instructions
  Modify the myApp.js file to log "Hello World" to the console.
 ## Tests

<!-- 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 challenge wants the user to do a ("Hello World"); which sounds simple enough but it doesn't specify that it has to be in the but it eventually does with the error "hello world is not in the " or a similar error but when you go to the you see this: /* PLEASE DO NOT EDIT THIS FILE the verification process may break / It's jarring for someone who doesn't know about this language or system yet. I suggest changing "file" into "file section" or "section of the file" just to prevent confusion. As one material (the challenge page) is telling me to edit the file while the other material (the glitch material) is telling me NOT to edit the file. 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):**
I agree, we can clarify the instructions to something like: To get started, just print the classic "Hello World" in the console. You need to modify the file. The file shouldnt be modified at all. There is in which you can add and the latter challenges code.
Can I take this issue?
If I remember correctly, that's what I did first. I did the on the and it gave me the error of "log isn't in the server"(paraphrased). Just to clarify that that's what happened. If you mean that the challenge should instead change so that it's the that should be manipulated, then I think that's better.
Sure! I'm still very new and inexperienced so I leave it to your more capable hands! 8D
I have started course and in my Glitch app there is no file, also putting console log in is also not working
You need to use the boilerplate project mentioned in the introduction challenge.


Question:
## Instructions
  Modify the myApp.js file to log "Hello World" to the console.
 ## Tests

Okay just to make it clear... First I cloned the Github boilerplate-express-gomix template... I'm not a big fan of Glitch... So if I have a project on Github at similar URL then logically file would be located at Now my question is pretty simple... JUST WHICH EXACT URL should I use in this case... this is a bit confusing... I managed to pass the whole previous Managing Packages with Npm section, still I had a bit of of hard time finding the proper URL to point to I found the main way to make it work in my case was to select the file, then click on Raw button. That would give me a similar URL which I later passed in the URL. Any hint on how to make the boilerplate project URL work with Github Thank you...
I think this should be to the Hint: "Use the new Glitch link for this episode" See this forum posts:


Question: "assert(Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('input').length === 1 && Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('button').length === 1, 'message: The CheckUserAge component should render with a single input element and a single button element.');", "assert(Enzyme.mount(React.createElement(CheckUserAge)).state().input === '' && Enzyme.mount(React.createElement(CheckUserAge)).state().userAge === '', 'message: The CheckUserAge component's state should be initialized with a property of userAge and a property of input, both set to a value of an empty string.');", "assert(Enzyme.mount(React.createElement(CheckUserAge)).find('button').text() === 'Submit', 'message: When the CheckUserAge component is first rendered to the DOM, the button's inner text should be Submit.');",  "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter3AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 3 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter17AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 17 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge3 = await enter3AndClickButton(); const userAge17 = await enter17AndClickButton(); assert(initialButton === 'Submit' && userAge3 === 'You Shall Not Pass' && userAge17 === 'You Shall Not Pass', 'message: When a number of less than 18 is entered into the input element and the button is clicked, the button's inner text should read You Shall Not Pass.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 18 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter35AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 35 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const userAge35 = await enter35AndClickButton(); assert(initialButton === 'Submit' && userAge18 === 'You May Enter' && userAge35 === 'You May Enter', 'message: When a number greater than or equal to 18 is entered into the input element and the button is clicked, the button's inner text should read You May Enter.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 18 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const changeInputDontClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 5 }}); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter10AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 10 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const changeInput1 = await changeInputDontClickButton(); const userAge10 = await enter10AndClickButton(); const changeInput2 = await changeInputDontClickButton(); assert(userAge18 === 'You May Enter' && changeInput1 === 'Submit' && userAge10 === 'You Shall Not Pass' && changeInput2 === 'Submit', 'message: Once a number has been submitted, and the value of the input is once again changed, the button should return to reading Submit.'); }; ",   "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter3AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '3' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter17AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '17' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge3 = await enter3AndClickButton(); const userAge17 = await enter17AndClickButton(); assert(initialButton === 'Submit' && userAge3 === 'You Shall Not Pass' && userAge17 === 'You Shall Not Pass', 'message: When a number of less than 18 is entered into the input element and the button is clicked, the button's inner text should read You Shall Not Pass.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '18' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter35AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '35' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const userAge35 = await enter35AndClickButton(); assert(initialButton === 'Submit' && userAge18 === 'You May Enter' && userAge35 === 'You May Enter', 'message: When a number greater than or equal to 18 is entered into the input element and the button is clicked, the button's inner text should read You May Enter.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '18' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const changeInputDontClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '5' }}); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter10AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '10' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const changeInput1 = await changeInputDontClickButton(); const userAge10 = await enter10AndClickButton(); const changeInput2 = await changeInputDontClickButton(); assert(userAge18 === 'You May Enter' && changeInput1 === 'Submit' && userAge10 === 'You Shall Not Pass' && changeInput2 === 'Submit', 'message: Once a number has been submitted, and the value of the input is once again changed, the button should return to reading Submit.'); }; ",  "assert(new RegExp(/(s|;)if(s|()/).test(Enzyme.mount(React.createElement(CheckUserAge)).instance().render.toString()) === false, 'message: Your code should not contain any if/else statements.');" ], "solutions": [

<!-- freeCodeCamp Issue Template --<!-- Please provide as much detail as possible for us to fix your issue --<!-- Remove any heading sections you did not fill out --<!-- NOTE: If your issue is CodePen Project / Test Suite related, please open it using the below URL instead --<!-- --<!-- Insert link to challenge below -- <!-- Describe below when the issue happens and how to reproduce it --Correct solution doesn't pass. Behavior of "Preview" page matches challenge description but these tests don't pass: When a number of less than 18 is entered into the input element and the button is clicked, the button's inner text should read You Shall Not Pass. }; When a number greater than or equal to 18 is entered into the input element and the button is clicked, the button's inner text should read You May Enter. }; Once a number has been submitted, and the value of the input is once again changed, the button should return to reading Submit. }; <!-- Describe your workspace in which you are having issues--Browser Name, Version: Chrome, Version 64.0.3282.140 (Official Build) (64-bit) Operating System: Windows 10 Mobile, Desktop, or Tablet: Desktop <!-- If relevant, paste all of your challenge code in here --<!-- Add a screenshot of your issue --<img width="422" alt="react-use-a-ternary-expression-for-conditional-rendering" src="https://user-"
The bug seems to come from the first boolean, . An alternative to checking a string's emptiness——works fine. I'm guessing that at some point during the tests, is not actually a string. For instance, if at some point becomes a (which does not have the attribute) then we're in trouble.
Found the bug: as predicted, there was a and mix-up. In the tests, the values sent into the input element are numbers, making undefined and failing the tests. These tests should not be sending numbers into input elements. As written in the MDN web docs for , the attribute of the Input Element in HTML is always of type String. Yet, the in the challenge has , so shouldn't the user still account for this? The MDN web docs say otherwise: Notice that the type attribute only alters the "type of control to display".


Question: "assert(Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('input').length === 1 && Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('button').length === 1, 'message: The CheckUserAge component should render with a single input element and a single button element.');", "assert(Enzyme.mount(React.createElement(CheckUserAge)).state().input === '' && Enzyme.mount(React.createElement(CheckUserAge)).state().userAge === '', 'message: The CheckUserAge component's state should be initialized with a property of userAge and a property of input, both set to a value of an empty string.');", "assert(Enzyme.mount(React.createElement(CheckUserAge)).find('button').text() === 'Submit', 'message: When the CheckUserAge component is first rendered to the DOM, the button's inner text should be Submit.');",  "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter3AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 3 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter17AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 17 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge3 = await enter3AndClickButton(); const userAge17 = await enter17AndClickButton(); assert(initialButton === 'Submit' && userAge3 === 'You Shall Not Pass' && userAge17 === 'You Shall Not Pass', 'message: When a number of less than 18 is entered into the input element and the button is clicked, the button's inner text should read You Shall Not Pass.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 18 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter35AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 35 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const userAge35 = await enter35AndClickButton(); assert(initialButton === 'Submit' && userAge18 === 'You May Enter' && userAge35 === 'You May Enter', 'message: When a number greater than or equal to 18 is entered into the input element and the button is clicked, the button's inner text should read You May Enter.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 18 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const changeInputDontClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 5 }}); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter10AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: 10 }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const changeInput1 = await changeInputDontClickButton(); const userAge10 = await enter10AndClickButton(); const changeInput2 = await changeInputDontClickButton(); assert(userAge18 === 'You May Enter' && changeInput1 === 'Submit' && userAge10 === 'You Shall Not Pass' && changeInput2 === 'Submit', 'message: Once a number has been submitted, and the value of the input is once again changed, the button should return to reading Submit.'); }; ",   "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter3AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '3' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter17AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '17' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge3 = await enter3AndClickButton(); const userAge17 = await enter17AndClickButton(); assert(initialButton === 'Submit' && userAge3 === 'You Shall Not Pass' && userAge17 === 'You Shall Not Pass', 'message: When a number of less than 18 is entered into the input element and the button is clicked, the button's inner text should read You Shall Not Pass.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const initialButton = mockedComponent.find('button').text(); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '18' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter35AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '35' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const userAge35 = await enter35AndClickButton(); assert(initialButton === 'Submit' && userAge18 === 'You May Enter' && userAge35 === 'You May Enter', 'message: When a number greater than or equal to 18 is entered into the input element and the button is clicked, the button's inner text should read You May Enter.'); }; ", "async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(CheckUserAge)); const enter18AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '18' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const changeInputDontClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '5' }}); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const enter10AndClickButton = () => { mockedComponent.find('input').simulate('change', {target: { value: '10' }}); mockedComponent.find('button').simulate('click'); return waitForIt(() => { mockedComponent.update(); return mockedComponent.find('button').text(); }); }; const userAge18 = await enter18AndClickButton(); const changeInput1 = await changeInputDontClickButton(); const userAge10 = await enter10AndClickButton(); const changeInput2 = await changeInputDontClickButton(); assert(userAge18 === 'You May Enter' && changeInput1 === 'Submit' && userAge10 === 'You Shall Not Pass' && changeInput2 === 'Submit', 'message: Once a number has been submitted, and the value of the input is once again changed, the button should return to reading Submit.'); }; ",  "assert(new RegExp(/(s|;)if(s|()/).test(Enzyme.mount(React.createElement(CheckUserAge)).instance().render.toString()) === false, 'message: Your code should not contain any if/else statements.');" ], "solutions": [

When type is set to "number", only numbers are allowed to be entered, yet the value is still stored as a . Therefore, the value attribute of the input element still returns a data type.
I've opened a pull request to fix these tests. Luckily, this "input-number-value problem" only afflicted this particular challenge.
thanks for explaining and for fixing :+1:
anytime :smiley:
Hi guys, thanks for taking the time to report and fix, we will get this reviewed soon. Happy contributing!
Hi, why this solution is not working. It's working fine if I enter a value greater than 18 but fails when I enter a value lesser than 18.
it won't work for values lesser than 18 as it this is an invalid expression (buttonThree && buttonOne) Instead, try the below solution : { ( == '' ? buttonOne: ( < 18 ? buttonThree : buttonTwo) }


Question: # --description-- <del> The text `* Daily Value %` should be aligned to the right. Create a `.right` selector and use the `justify-content` property to do it. </del> <ins> The text `% Daily Value *` should be aligned to the right. Create a `.right` selector and use the `justify-content` property to do it. </ins> # --hints--

There appears to be a slight typo in the English instructions on Step 41 of "Learn Typography by Building a Nutrition Label". The instructions are displayed on the file and read as: The typo is with the text: . The and <p class="bold right"% Daily Value </p% Daily Value ` as part of the exercise. The following code is what the challenge starts with - where the instructions are displayed The expected instructions would read with instead of : This would match the actual text value for the paragraph element the instructions are referencing. ! ! Device: PC OS: Windows 10 Browser: Chrome Version: Version 115.0.5790.110 (Official Build) (64-bit) I would like to point out that I have only seen this issue with English and I am not sure if other languages are also impacted.
Thanks for opening this issue. This looks something that can be fixed by "first time" code contributors to this repository. Here are the files that you should be looking at to work on a fix: List of files: Please make sure you read , we prioritize contributors following the instructions in our guides. Join us in or if you need help contributing, our moderators will guide you through this. Sometimes we may get more than one pull requests. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.


Question: # --description-- <del> Create a third `@media` query for `only screen` with a `max-width` of `550px`. Within, create a `.hero-title` selector with a `font-size` set to `6rem`, a `.hero-subtitle, .author, .quote, .list-header` selector with a `font-size` set to `1.8rem`, a `.social-icons` selector with a `font-size` set to `2rem`, and a `.text` selector with a `font-size` set to `1.6rem`. </del> <ins> Create a third `@media` query for `only screen` with a `max-width` of `550px`. Within, create a `.hero-title` selector with a `font-size` set to `6rem`, a `.hero-subtitle, .author, .quote, .list-title` selector with a `font-size` set to `1.8rem`, a `.social-icons` selector with a `font-size` set to `2rem`, and a `.text` selector with a `font-size` set to `1.6rem`. </ins> # --hints--


Question: You should declare a variable named `xp`. ```js <del> assert.match(code, /xp/); </del> <ins> assert.match(code, /lets+xp/); </ins> ``` You should not assign a value to your variable.

We recently a lot of updates to this project. So the step numbers in the main branch don't match up with what is currently on production. Here is the correct file you need to look at We had this issue reported on the forum If you try to use the wrong variable name like this then the hint text tells you this: it looks like the third test here will need to be updated You should declare a variable named . see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response


Question: man -f shutdown ``` <ins> #### Display the man page of ASCII table: ```bash man ascii ``` </ins> ### More information: * [Wikipedia](https://en.wikipedia.org/wiki/Man_page)

Potentially, upgrading to MongoDB 4 has broken the GitPod Development. I am looking into it, but here are the errors: Shortened Error (me trying to restart Mongodb, after an initial crash): <details<summarymongod --version</summary</details<details<summaryFull Error</summary</details<details<summaryPotentially relevant client error</summary</details
To the best of my knowledge no code changes were made to upgrade MongoDB on GitPod. The base image using MongoDB 4 needs to be looked at. In other words, the move to MongoDB 4.0.x (not same as 4.x) breaking GitPod is coincidental?
To be honest, I have no idea. The base image: Source: Docs: From what I can see, the docker hub provides no information about the image, but the GitHub repo suggests the image has not been updated in 4 months. To me, this suggests an issue definitely on our side.
That is pretty easy to confirm. On GitPod you should be able to checkout a commit (any commit) that was best known to working from a few days ago. A diff should bring you closer to the root cause, say for example a dependency update somewhere. But to prevent beating around the bush, I think we instead provide our own base image with requirements set in the local setup file. Let me know if you need help with this & thanks for looking into it.
Update: There is a high likelyhood I have been looking into the wrong section for where the problem is. Here is the original error which lead me to look into the database stuff: <details<summaryClient Error</summary</detailsSteps to reproduce: 1) Open any instance off fCC GitPod 2) Wait for client to finish developing 3) Open browser preview of app 4) See client crash with above error I tried killing the database, restarting it, and restarting the client, but the app crashes, everytime the browser tries to load.
I can't reproduce this, sorry! If I go to it just works. I know we've talked about this before, but do you have any special settings for GitPod besides Enable feature preview? Environment variables are the only thing I can see that might cause an issue.
Other than the Feature Preview, everything is bog-standard. I will try to disable FP.


Question: man -f shutdown ``` <ins> #### Display the man page of ASCII table: ```bash man ascii ``` </ins> ### More information: * [Wikipedia](https://en.wikipedia.org/wiki/Man_page)

Disabled Feature Preview Rebased fork against upstream <details<summaryNew Client Error (similar, but different)</summary</details
If you have a lot of work in progress branches, I would suggest pushing them up to your fork and starting with a clean workspace, then on you should delete everything that is old/stale. As a best-practice I would start with a new workspace (provided the work is saved elsewhere like pushing up to th remote fork) and getting rid of older workspaces.
Fork? That could be relevant. Could you drop the Gitpod link that you're using here.
I might be using the wrong word... all I meant is: Here is the link I sometimes use - depends on whether I am testing with changes or not:
All of my testing (outside of the open PR branch) has been with a new workspace. I regularly clean the workspaces. Positive this is not part of the issue on my end.
Quick question: Are you using the preview browser within the GitPod environment? What happens if you ignore the crash on the preview browser and just use the "open in a new tab" button: ! If you reload there, is it the same behavior?
I never use the preview browser - always the new tab view (full). Had not thought to try it there, but, if I am relegated to using the preview, I still would not use it...
Hmm, I was able to reproduce with a link from your fork in your previous comment. But the link from this main repo works A-OK. Is it the same case for you? Or is it broken no matter what you do? I know you rely on GitPod quite a bit, we are totally cool with you pushing branches directly up to the main repository as an exception considering the massive amounts of work you put into contributions. If there is anything we can do to unblock you we would be happy to assist. Sorry about not being able to troubleshoot. :(
I've one idea left to try, that's updating my own fork and seeing if I can repro. I'll have a go tomorrow.
This is the same for me. A workspace from appears to work as expected. So, it is just my fork (unless proved otherwise by Oliver)... I will report this to the GitPod GitHub. Thank you, both, for your time in this.


Question: man -f shutdown ``` <ins> #### Display the man page of ASCII table: ```bash man ascii ``` </ins> ### More information: * [Wikipedia](https://en.wikipedia.org/wiki/Man_page)

If there is anything in particular I need to work on, then I will take you up on this. Thanks
Just to confirm: it seems like it's some weird problem with Shaun's fork. It's worth trying my fork , but I suspect it'll just work when you use my link.
Worst case you would need to delete and recreate your fork and PRs, which is going to be a pain.
Strangely, his fork doesn't work locally also.
After all of that, pointed out the issue - Gatsby had enrolled me into their super secret testing club, and the development server-side rendering broke the build. Is it worth it me opening a PR with the change to prevent this? Or, am I really just that lucky?
Well, congrats on being the secret list that you never subscribed to (I hope?)!! Please make a PR to make sure no else gets on the exclusive club list and is surprised. We wasted so much time for no reason. Lolz.
Sorry this has been breaking you. This error line: comes from This generally works as most people run from the root of their site so equals the root of their site. I'm not sure what your setup is but I'm guessing you're starting the dev server differently? This isn't what we normally do — we have a more robust way to get the public directory that's not being used here that I'll switch this too which should unstick you.
Hey Thanks for getting back to us. You are correct we do have a non-common setup. We essentially use in parallel mode for spinning our API and the client (Gatsby) apps. Even within the client, we need to do a pre-Gatsby develop step. We package a few things (with Webpack) to for one of our client-side runtimes before bringing up Gatsby to start the dev server the normal way. Anyways while we do not understand the internals of Gatsby for this particular feature yet owing to time (BTW, Gatsby 3.x is fast, congrats to the team on shipping it! ), we understand that turning off the flag did resolve the issue. We will be happy to troubleshoot if you point us to some documentation about the "discovery" process for the public directory in your comment. Thanks again.
Thanks for confirming the issue!


Question: man -f shutdown ``` <ins> #### Display the man page of ASCII table: ```bash man ascii ``` </ins> ### More information: * [Wikipedia](https://en.wikipedia.org/wiki/Man_page)

No need for you to do anymore work — I'll fix this upstream so once DEV_SSR is enabled for everyone, it won't cause you (and others with similar setups) to have any trouble.


Question: Getting Started --------------- <ins> Note: If this is your first time working with a node-gyp dependent module, please follow the [node-gyp installation guide](https://github.com/nodejs/node-gyp#installation) to ensure a working npm build. </ins> The easiest way to get started is to clone the repository:

I'm a new contributor to this project and have run into a few confusing points on that I'd like to clarify for other new contributors. .io - From a few other contributors, I've been told this is no longer used. I'd suggest removing this from the contributor's guide. npm dependencies. This project has a dependency to which is confusing to set up for new NodeJs developers. I'd propose to mention this link to get new Node developers started, especially for Windows, since it involves some unusual installations like Visual Studio for the C++ compiler. isn't any mention of running tests before submitting a pull request. This is something that could be easily missed and cause a pull request to fail the TravisCI build. I've learned that one pre-test dependency, JSONLint, doesn't work for the Windows filesystem. As a workaround, I'd suggest all contributors on Windows to run the tests directly by skipping the pre-test lint run. An additional step could be to manually run JSONLint on individual files, without using the problem-causing wildcard *. For non-Windows contributors, it should be mandatory to run before a pull request.
These all sound like reasonable changes. Go ahead and get a PR going for it.
I'll get started on it.


Question: Your `idToText` function should return the result of calling `.find()` on the `cells` array with a callback function that takes an `cell` parameter and returns `cell.id === id`. <ins> Both of your functions should use implicit returns. </ins> # --hints-- You should declare an `idToText` variable in your `evalFormula` function.

When working with the , it mentions the following instructions to complete the challenge: And that's alright, but when running the following correct solution, it doesn't pass and throws the following error: The current test error that it throws is misleading and it's happening because there's a missing test for the above code, which is expecting an implicit return. A test should be to let the user know that an implicit return is expected and can reach to the expected solution: Updating the challenge instruction would be appreciated too. On the other hand, there's a similar case where a correct test is running. When executing the following solution, this happens: This is tested using the following test: ! Device: Laptop OS: macOS 13.6.6 Browser: Chrome Version: 123 No response
Hi that makes sense: regarding the challenge text I would modify it as it follows: What do you think about it? Talking about code that’s right, we should add a test for the listed case in order to fix this. If updated text is ok I’ll proceed adding missing test.
Hey how about being more specific like other the other challenges? Something like the following: And the test error text should be the same when the condition is not met: That's my opinion, ofc. Appreciate that you ask. When able, please submit the PR and let's see what the maintainers think
Hi and I've submitted a PR using juan suggestion about instructions; then I a test assertion just to give explicit error on implicit return. Supravisor PR just fixed text instructions but not a test, so I did it.


Question: "title": "Periodic Table Database", "intro": [ "This is one of the required projects to earn your certification.", <del> "For this project, you will create Bash a script to get information about chemical elements from a periodic table database." </del> <ins> "For this project, you will create a Bash script to get information about chemical elements from a periodic table database." </ins> ] }, "build-a-salon-appointment-scheduler-project": {

"Bash a script" should be "a Bash script" This looks like something that can be fixed by "first-time" code contributors to this repository. The files you need to fix are the two above. Please make sure you read our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.


Question:
This certifies that

{t('certification.certifies')}

 {displayName}

has successfully completed the freeCodeCamp.org

{t('certification.completed')}

 {certTitle}

  Developer Certification, representing approximately{' '} {completionTime} hours of coursework   {t('certification.developer')} {completionTime} hours of coursework


Question: # --description-- <del> This is one of the required projects to earn your certification. For this project, you will create Bash a script to get information about chemical elements from a periodic table database. </del> <ins> This is one of the required projects to earn your certification. For this project, you will create a Bash script to get information about chemical elements from a periodic table database. </ins> # --instructions--


Question: --- <del> ```js console.log(`${string1} ${string2}`); ``` </del> <ins> ```console.log(`${string1} ${string2}`);``` </ins> ---

There is an option being displayed as a code block, rather than inline code like its siblings: <details<summaryScreenshot</summary! </detailsMake the following change: js --- (); --- ();` To
This issue is open to first-time code contributors to this repository. The file that you should be updating is linked in the original post. We typically do not assign issues. Instead, we accept the most quality contribution followed by the one that is made first. Please make sure you read our as well as our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Happy contributing.
I'm limiting comments in this issue to reduce noise. If you're interested in contributing, everything you need is provided in the thread.


Question: Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Give it your own personal style. <del> You can use HTML, JavaScript, CSS, and the D3 svg-based visualization library. The tests require axes to be generated using the D3 axis property, which automatically generates ticks along the axis. These ticks are required for passing the D3 tests because their positions are used to determine alignment of graphed elements. You will find information about generating axes at <https://github.com/d3/d3/blob/master/API.md#axes-d3-axis>. Required (non-virtual) DOM elements are queried on the moment of each test. If you use a frontend framework (like Vue for example), the test results may be inaccurate for dynamic content. We hope to accommodate them eventually, but these frameworks are not currently supported for D3 projects. </del> <ins> You can use HTML, JavaScript, CSS, and the D3 svg-based visualization library. The tests require axes to be generated using the D3 axis property, which automatically generates ticks along the axis. These ticks are required for passing the D3 tests because their positions are used to determine alignment of graphed elements. You will find information about generating axes at <https://github.com/d3/d3/blob/master/API.md#axes-d3-axis>. Required DOM elements are queried on the moment of each test. If you use a frontend framework (like Vue for example), the test results may be inaccurate for dynamic content. We hope to accommodate them eventually, but these frameworks are not currently supported for D3 projects. </ins> **User Story #1:** I can see a title element that has a corresponding `id="title"`.

In the 5 certification projects for the Data Visualization certificate, the phrase "(non-virtual) DOM elements" is used without any prior explanation (I checked the Data Visualization curriculum and no such phrase was introduced at any point). It is not clear therefore to the learner what the requirement "Required (non-virtual) DOM elements are queried on the moment of each test." could actually mean. Now, maybe it means "actual DOM' vs "virtual DOM" from the React curriculum. But requiring that a priori knowledge to understand a Data Visualization project requirement seems like overkill? I propose that this requirement in all 5 projects be stated simply as "Required DOM elements..." The chance of someone not understanding that we mean 'actual DOM elements' seems miniscule to me in the context of these challenges, but I'm not a web developer, so if there is a valid reason to use the term 'non-virtual DOM elements', it would be very interesting for me to learn/hear of it. ps. should this issue be accepted, please also fix the phrasing "on the moment" to be "at the moment" which I believe is what was actually meant. update all 5 certification project statements referring to (non-virtual) DOM elements as per the above discussion. No response N/A No response
I think this is more of a note for advanced campers, similar to mentioning that the tests might not work with a framework like Vue.
Yes I think so too, but it is too confusing to someone who is not that advanced. If we didn't say it, what is the chance an advanced camper will run into a problem?
It likely wouldn't - though I also haven't seen much mention of beginners who do have confusion.
I agree that I haven't seen questions on this either but since the rule-of-thumb is to not include undefined technical terms in the challenges and projects, we should do something about this one. (Either define it or drop it)
Thanks for opening this issue. This looks like something that can be fixed by "first-time" code contributors to this repository. Here are the files that you should be looking at to work on a fix: List of files: In these files, the text should be updated to . Please make sure you read our , we prioritize contributors following the instructions in our guides.


Question: Fulfill the below user stories and get all of the tests to pass. Use whichever libraries or APIs you need. Give it your own personal style. <del> You can use HTML, JavaScript, CSS, and the D3 svg-based visualization library. The tests require axes to be generated using the D3 axis property, which automatically generates ticks along the axis. These ticks are required for passing the D3 tests because their positions are used to determine alignment of graphed elements. You will find information about generating axes at <https://github.com/d3/d3/blob/master/API.md#axes-d3-axis>. Required (non-virtual) DOM elements are queried on the moment of each test. If you use a frontend framework (like Vue for example), the test results may be inaccurate for dynamic content. We hope to accommodate them eventually, but these frameworks are not currently supported for D3 projects. </del> <ins> You can use HTML, JavaScript, CSS, and the D3 svg-based visualization library. The tests require axes to be generated using the D3 axis property, which automatically generates ticks along the axis. These ticks are required for passing the D3 tests because their positions are used to determine alignment of graphed elements. You will find information about generating axes at <https://github.com/d3/d3/blob/master/API.md#axes-d3-axis>. Required DOM elements are queried on the moment of each test. If you use a frontend framework (like Vue for example), the test results may be inaccurate for dynamic content. We hope to accommodate them eventually, but these frameworks are not currently supported for D3 projects. </ins> **User Story #1:** I can see a title element that has a corresponding `id="title"`.

Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.


Question: # --instructions-- <del> In the package.json file, your current rule for how npm may upgrade `@freecodecamp/example` is to use a specific version (1.2.13). But now, you want to allow the latest 1.2.x version. </del> <ins> In the package.json file, your current rule for how npm may upgrade `@freecodecamp/example` is to use a specific version (`1.2.13`). But now, you want to allow the latest `1.2.x` version. </ins> Use the tilde (`~`) character to prefix the version of `@freecodecamp/example` in your dependencies, and allow npm to update it to any new _patch_ release.

In RTL, these texts will be broken, because they are a mix of special character, numbers, which follow different direction in RTL than LTR. ~1.2.13 1.2.x 1.x.x To fix these, add code elements around the version number. File: change to there are multiple instances in these files All of them should be wrapped in code elements Speaking of weird interactions. Using special characters that relay on direction will break in RTL, because it will be reverted, in example. will be we can wrap in
I want to contribute towards this issue. Can you assign this issue to me.
The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute, and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the


Question:
return ( <FullWidthRow key={superBlock}> <Spacer />
Full Stack Certification

Legacy Full Stack Certification

 Once you've earned the following freeCodeCamp certifications, you'll  be able to claim The Full Stack Developer Certification:   be able to claim the Legacy Full Stack Developer Certification:

Responsive Web Design

Some users can claim python, new QA, and new infosec certifications without submitting their required projects on .dev. It seems the api does not find the cert challenge and proceeds by setting the related cert flag on the user object to true. The issue can be resolved by reseeding the db locally. I cannot reproduce this issue at the moment, but I will keep this open in case other users are experiencing the same issue.
Hello! I tested this issue, and I was able to claim the certifications without completing the projects.
could you check if you can see the certification after claiming it? I'm just wondering if this is purely a client-side issue.
I am able to see the four certificates I could claim, yes.
Thanks for checking that. In that case, while it seems likely that it will fine if the database is migrated, the api should definitely default to rejecting certifications it does recognise.
Yes We Can Claim Python Certification Without submitting the Projects.
that's really serious


Question:
return ( <FullWidthRow key={superBlock}> <Spacer />
Full Stack Certification

Legacy Full Stack Certification

 Once you've earned the following freeCodeCamp certifications, you'll  be able to claim The Full Stack Developer Certification:   be able to claim the Legacy Full Stack Developer Certification:

Responsive Web Design

Currently when you complete/claim a certificate there's an entry on the timeline: <img width="582" alt="Screen Shot 2020-05-27 at 9 37 55 AM" src="https://user-"This doesn't seem to be working for the new Scientific Computing with Python, Data Analysis with Python, and Machine Learning with Python certificates.
I'm a new contributor but I'd like to help out on this.
I think this is mostly working. You just need to refresh the page before it shows up... <img width="598" alt="Screen Shot 2020-05-27 at 11 34 12 AM" src="https://user-"Edit: hmm, it seems to be working locally, but not on .dev - the "view cert" button is there in both environments - it just doesn't show on the timeline on .dev
Ah, interesting. This does seem to work locally but not on .dev for some reason.
This may be a one off issue related to where the new/split certificates (Quality Assurance, Information Security, Scientific Computing with Python, Data Analysis with Python, and Machine Learning with Python) were not seeded to the .dev database for some reason. I can confirm this is working locally like mentioned above. thank you for your interest in contributing. Please check out issues with the label for other things we need help with.


Question:
return ( <FullWidthRow key={superBlock}> <Spacer />
Full Stack Certification

Legacy Full Stack Certification

 Once you've earned the following freeCodeCamp certifications, you'll  be able to claim The Full Stack Developer Certification:   be able to claim the Legacy Full Stack Developer Certification:

Responsive Web Design

<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --1) The Full Stack Cert claimed date will only show as the current date and not the date it was claimed on. I claimed mine on the 7th of September and checking back regularly I noticed the claimed on date was always the current date. 2) The Full Stack Cert appears as the Legacy Full Stack Cert on a users profile page, clicking this leads to an error as the legacy cert does not exist. It should be in with the new certificates. That being said, on the settings page the link to view the certificate is linked correctly. ${username-here} /full-stack ${username-here} N.A 1) Just the claimed on date. No screenshot necessary. 2) !
Similar to
I am having the same issue with my Full Stack Certificate
Mine as well. Has this been addressed?
Same here - The issued date shows the current date and not the date on which it was originally issued -
Related
Have the same problem: the date of Full Stack Certificate is always a current date.
If there are no records for a fullstack certificate, a good fallback would be going thought the date of the modern certificates and displaying the date of latest claimed certificate.
optimally, we should add a completion timestamp and an id when campers claim a fullstack certificate with a fallback to the last earned cert if a timestamp is not found.
My full stack certification also updates with the current date not the claimed date.
The date on my full stack certificate is showing the date i claim my Responsive Web design certificate ( the first certificate ). and now if i want to see the certificate it is asking me to claim certificate when i claim it will say is like u have claim the certificate and it will not show me the certificate.
This is an ongoing issue, please use the reactions instead to assert "me too". Potential approach for fixes: and
Also related to the Full Stack cert – the date seems to be the date the first certification was claimed, not the date the full stack certification was claimed:
The fallback is not working properly and I should have caught that. It's not a tricky fix, but I'll make sure it works this time!
Ok thenks On May 5, 2020 11:04, "Oliver Eyton-Williams" <:


Question: Functional programming is all about creating and using non-mutating functions. <del> The last challenge introduced the `concat` method as a way to combine arrays into a new one without mutating the original arrays. Compare `concat` to the `push` method. `push` adds an item to the end of the same array it is called on, which mutates that array. Here's an example: </del> <ins> The last challenge introduced the `concat` method as a way to merge arrays into a new array without mutating the original arrays. Compare `concat` to the `push` method. `push` adds items to the end of the same array it is called on, which mutates that array. Here's an example: </ins> ```js const arr = [1, 2, 3]; <del> arr.push([4, 5, 6]); </del> <ins> arr.push(4, 5, 6); </ins> ``` <del> `arr` would have a modified value of `[1, 2, 3, [4, 5, 6]]`, which is not the functional programming way. </del> <ins> `arr` would have a modified value of `[1, 2, 3, 4, 5, 6]`, which is not the functional programming way. </ins> <del> `concat` offers a way to add new items to the end of an array without any mutating side effects. </del> <ins> `concat` offers a way to merge new items to the end of an array without any mutating side effects. </ins> # --instructions-- <del> Change the `nonMutatingPush` function so it uses `concat` to add `newItem` to the end of `original` instead of `push`. The function should return an array. </del> <ins> Change the `nonMutatingPush` function so it uses `concat` to merge `newItem` to the end of `original` without mutating `original` or `newItem` arrays. The function should return an array. </ins> # --hints--

Since newItem, which references an array should be to the original array (per the instructions), I expected to pass the test. Instead it says "nonMutatingPush([1, 2, 3], [4, 5]) should return [1, 2, 3, 4, 5].", which would be concatenating the two arrays, but it isn't a non mutating alternative to as the instructions suggest. <img width="1437" alt="fcc-challenge" src="https://user-"<!-- Please complete the following information. --- Device: [laptop] OS: [macOS] Browser: [chrome] <!-- Add any other context about the problem here. --
the function should return (newItem). You put the newItem in an array literal, due to which the test is failing.
I see what you are saying. Really, the challenge is asking you to replicate the effect of using push with the spread operator. I'm not sure what change to the wording would make this clearer. Do you have any suggestions?
it also fails without literal syntax, e.g.: I know that it will pass when I write but this is the problem, because the instructions say: would result in arr having the value . So i suppose a function named "nonMutatingPush" should have a similar effect as push namely creating a "two dimensional"-Array in this case, like in the example in the instructions, and not do something entirely different (ie. merging the content of the two arrays into a new array)
The challenge doesn't say anything about using a spread operator, instead it asks users to "Change the nonMutatingPush function so it uses concat to add newItem to the end of original instead of push". Pushing an array to an array would produce an array in an array. Since "The concat() method is used to merge two or more arrays" () to replicate the effect of push one needs to put the array about to be "pushed" into a new array, so the outer array gets merged and the inner array stays intact. My suggestion would be, if replicating the push behaviour isn't the case, but merging the two given arrays, the instructions should ask users to "Change the nonMutatingPush function so it uses concat to merge newItem with original, without altering and "
Yeah makes sense to me.


Question: Functional programming is all about creating and using non-mutating functions. <del> The last challenge introduced the `concat` method as a way to combine arrays into a new one without mutating the original arrays. Compare `concat` to the `push` method. `push` adds an item to the end of the same array it is called on, which mutates that array. Here's an example: </del> <ins> The last challenge introduced the `concat` method as a way to merge arrays into a new array without mutating the original arrays. Compare `concat` to the `push` method. `push` adds items to the end of the same array it is called on, which mutates that array. Here's an example: </ins> ```js const arr = [1, 2, 3]; <del> arr.push([4, 5, 6]); </del> <ins> arr.push(4, 5, 6); </ins> ``` <del> `arr` would have a modified value of `[1, 2, 3, [4, 5, 6]]`, which is not the functional programming way. </del> <ins> `arr` would have a modified value of `[1, 2, 3, 4, 5, 6]`, which is not the functional programming way. </ins> <del> `concat` offers a way to add new items to the end of an array without any mutating side effects. </del> <ins> `concat` offers a way to merge new items to the end of an array without any mutating side effects. </ins> # --instructions-- <del> Change the `nonMutatingPush` function so it uses `concat` to add `newItem` to the end of `original` instead of `push`. The function should return an array. </del> <ins> Change the `nonMutatingPush` function so it uses `concat` to merge `newItem` to the end of `original` without mutating `original` or `newItem` arrays. The function should return an array. </ins> # --hints--

And since merging two arrays is taught in the previous lesson, I think the goal of this lesson is to replicate the behaviour of push using concat. In that case, my suggestion would be: "Change the nonMutatingPush function so it uses concat to replicate the behaviour of push without altering the first and second arrays".
I think we need to be careful. The intended behavior is better. We don't want the users to concat a reference to the second array.
! you need to assign (newItem) to a new variable and return it
As far as I can see the idea here is the user should create a function that behaves like , but it returns a new array instead of modifying the array it's called on. That function can be implemented as follows This replicates as closely as possible, so that if I in the same way as if I used push So, the main issue is that both the solution and the final test need updating. Also wording, should help guide users down the right path.
If we want users to learn a "non mutating push", I think its better that the solution not provide an avenue to mutate the original arrays. I think the current intended solution is fine but the wording describing it isn't quite accurate.
I think it would be better to compare:
IMHO, it is necessary either to change the expected solution or the wording of the task. For example: P.S.: It seems to me that it is better to change the expected solution (based on the previously described behavior of the push method)
I wouldn't change the expected behavior.. If we change the expected behavior, then this is no longer a non-mutating function. We should modify the description.
I agree with any of your solutions, but I did not understand - why would another solution cease to be a non-mutating function?
If you change the expected behavior, then if is an array, the output of this function can be used to mutate , as I explained above.
Thank you. I understand what you mean... - but then it looks like we are deliberately simplifying the task to meet the requirements. Maybe it's better to just replace the expected behavior with (for example)?
I don't see how this would be a simplification. The current solution works fine. Not changing the solution wouldn't make the task simpler - it would make it identical to what it is right now.


Question: Functional programming is all about creating and using non-mutating functions. <del> The last challenge introduced the `concat` method as a way to combine arrays into a new one without mutating the original arrays. Compare `concat` to the `push` method. `push` adds an item to the end of the same array it is called on, which mutates that array. Here's an example: </del> <ins> The last challenge introduced the `concat` method as a way to merge arrays into a new array without mutating the original arrays. Compare `concat` to the `push` method. `push` adds items to the end of the same array it is called on, which mutates that array. Here's an example: </ins> ```js const arr = [1, 2, 3]; <del> arr.push([4, 5, 6]); </del> <ins> arr.push(4, 5, 6); </ins> ``` <del> `arr` would have a modified value of `[1, 2, 3, [4, 5, 6]]`, which is not the functional programming way. </del> <ins> `arr` would have a modified value of `[1, 2, 3, 4, 5, 6]`, which is not the functional programming way. </ins> <del> `concat` offers a way to add new items to the end of an array without any mutating side effects. </del> <ins> `concat` offers a way to merge new items to the end of an array without any mutating side effects. </ins> # --instructions-- <del> Change the `nonMutatingPush` function so it uses `concat` to add `newItem` to the end of `original` instead of `push`. The function should return an array. </del> <ins> Change the `nonMutatingPush` function so it uses `concat` to merge `newItem` to the end of `original` without mutating `original` or `newItem` arrays. The function should return an array. </ins> # --hints--

We just need to describe the task more accurately.
We show that we can get this result with push: [1, 2, 3, [4, 5]], and then we ask to get [1, 2, 3, 4, 5] with concat?.. Well... - Ok. Thank you for your time.
Right.... You highlighted exactly the [wrong] description that I want replaced. Using push like that mutates one array and allows for the mutation of the other. The current solution to the challenge prevents mutation of both. The description should reflect that fact. Changing the solution to permit mutation of one of the arguments misses the idea of making a more functional solution to using push.
Can I work on this ?
Sure. We don't assign issues - we accept the first complete PR that addresses the issue. In ttis case, we are looking for someone to update the description of the challenge so that is clear that we want a non-mutating push.
I've read through the full thread and submitted a PR that I think should satisfy most, if not all, concerns with the description.


Question: <del> # Contributors Guide </del> <ins> # Contributor's Guide </ins> ## I want to help! We welcome pull requests from Free Code Camp campers (our students) and seasoned JavaScript developers alike! Follow these steps to contribute: <del> 1.  Check our [public Waffle Board](https://waffle.io/freecodecamp/freecodecamp). 2.  Pick an issue, let us know you're working on it, and start working on it. If you've found a bug that is not on the board, [follow these steps](#found-a-bug). 3.  You can find issues we are seeking assistance on by searching for the [Help Wanted](https://github.com/FreeCodeCamp/FreeCodeCamp/labels/help%20wanted) tag. 4.  Feel free to ask for help in our [Help Contributors](https://gitter.im/FreeCodeCamp/HelpContributors) Gitter room. </del> <ins> 1.  Find an issue that needs assistance by searching for the [Help Wanted](https://github.com/FreeCodeCamp/FreeCodeCamp/labels/help%20wanted) tag. 2.  Let us know you are working on it, by posting a comment on the issue. 3.  Feel free to ask for help in our [Help Contributors](https://gitter.im/FreeCodeCamp/HelpContributors) Gitter room. If you've found a bug that is not on the board, [follow these steps](#found-a-bug). </ins> ## Contribution Guidelines 1.  Fork the project: [How To Fork And Maintain a Local Instance of Free Code Camp](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/How-To-Fork-And-Maintain-a-Local-Instance-of-Free-Code-Camp) 2.  Create a branch specific to the issue or feature you are working on. Push your work to that branch. ([Need help with branching?](https://github.com/Kunena/Kunena-Forum/wiki/Create-a-new-branch-with-git-and-manage-branches)) 3.  Name the branch something like `fix/xxx` or `feature/xxx` where `xxx` is a short description of the changes or feature you are attempting to add. For example `fix/email-login` would be a branch where I fix something specific to email login. <del> 4.  You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything doesn't conform to [Free Code Camp's JavaScript Style Guide](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Free-Code-Camp-JavaScript-Style-Guide) (you can find a summary of those rules [here](https://github.com/FreeCodeCamp/FreeCodeCamp/blob/staging/.eslintrc). Please do not ignore any linting errors, as they are meant to **help** you and to ensure a clean and simple code base. Make sure none of your JavaScript is longer than 80 characters per line. </del> <ins> 4. [Set up Linting](#linting-setup) to run as you make changes. 5. When you are ready to share your code, run the test suite `npm test` and ensure all tests pass.  For Windows contributors, skip the jsonlint pretest run by using `npm run test-challenges`, as jsonlint will always fail on Windows, given the wildcard parameters. </ins> 5.  Squash your Commits. Ref: [rebasing](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/git-rebase) <del> 6.  Once your code is ready, submit a [pull request](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Pull-Request-Contribute) from your branch to Free Code Camp's `staging` branch. We'll do a quick code review and give you feedback, then iterate from there. </del> <ins> 6.  Submit a [pull request](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/Pull-Request-Contribute) from your branch to Free Code Camp's `staging` branch.  [Travis CI](https://travis-ci.org/FreeCodeCamp/FreeCodeCamp) will then take your code and run `npm test`.  Make sure this passes, then we'll do a quick code review and give you feedback, then iterate from there. </ins> Prerequisites


Question: # --description-- <del> Find the number of non-empty subsets of ${11, 22, 33, ldots, {250250}^{250250}}$, the sum of whose elements is divisible by 250. Enter the rightmost 16 digits as your answer. </del> <ins> Find the number of non-empty subsets of ${{1}^{1}, {2}^{2}, {3}^{3}, ldots, {250250}^{250250}}$, the sum of whose elements is divisible by 250. Enter the rightmost 16 digits as your answer. </ins> # --hints--

The Project euler problem 250 has a format issue Confront with To fix this issue you will need to change this file so that the numbers are correctly formatted as exponents: (You can use the way ^ is written in the challenge as a guide to fix 1^1, 2^2, and 3^3) Please make sure you read , we prioritize contributors following the instructions in our guides. Join us in or if you need help contributing, our moderators will guide you through this. An issue with the help wanted or first timers only label is open for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. Sometimes we may get more than one pull requests. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.
I have set up the project in my local machine and looking to contribute for open source is this still open can I work on it


Question: # --description-- <del> The phrase `let me show you` can be used to direct attention and introduce something. For example: `Here's the main office area. And over there, let me show you, that's the conference room.` </del> <ins> The phrase `let me show you` can be used to direct attention and introduce something. For example: `This is the main office area. Let me show you to the conference room.` </ins> # --question-- ## --text-- <del> What is the speaker directing attention to after saying `let me show you`? </del> <ins> What is Maria directing attention to? </ins> ## --answers-- <del> The main office area </del> <ins> Main office area </ins> ### --feedback--

Description and question refers to the Here's the main office area. And over there, let me show you, that's the conference room. text. However the audio mentions let me show you in context of showing to the desk. n/a Audio used in task should match the description context. Or the other way around. No response n/a No response
Yes, this is a problem. None of the answers are correct. Here's how I'd fix it: change the option "the conference room" to "the desk". This should solve the problem. We could also: simplify the question to "What is Maria directing attention to?" simplify the example to "Here's the main office area. Let me show you to the conference room."
I am fine with the suggestion. You could use as the example. What do you think
Agreed I'm going to add the help wanted label.


Question: import debug from 'debug'; import { isEmail } from 'validator'; import format from 'date-fns/format'; <ins> import { reportError } from '../middlewares/sentry-error-handler.js'; </ins> import { ifNoUser401 } from '../utils/middleware'; import { observeQuery } from '../utils/rx';


Question: import debug from 'debug'; import { isEmail } from 'validator'; import format from 'date-fns/format'; <ins> import { reportError } from '../middlewares/sentry-error-handler.js'; </ins> import { ifNoUser401 } from '../utils/middleware'; import { observeQuery } from '../utils/rx';


Question: import debug from 'debug'; import { isEmail } from 'validator'; import format from 'date-fns/format'; <ins> import { reportError } from '../middlewares/sentry-error-handler.js'; </ins> import { ifNoUser401 } from '../utils/middleware'; import { observeQuery } from '../utils/rx';


Question: .hero-subtitle, .author, .quote, <del> .list-header { </del> <ins> .list-title { </ins> font-size: 1.8rem; }

In [()] step it is written but in the html file there is no selector instead there is selector present. ( In [()] step it is written but in the html file there is no selector instead there is selector present. either change the to or remove the totally from the step to do. No response
Page File: the seed content doesn't have , and the step after it do include it as well. we should swap with This looks something that can be fixed by "first time" code contributors to this repository. Here is the file that you should be looking at to work on a fix: file: Please make sure you read , we prioritize contributors following the instructions in our guides. Join us in or if you need help contributing, our moderators will guide you through this. Sometimes we may get more than one pull requests. We typically accept the most quality contribution, followed by the one that is made first. Happy contributing.
I would like to work on this issue. Please assign this issue to me .
We don't give assignment unless to an old time contributor to the repo. Edit: sorry should have provided more info. There were times when people assigned an issue and didn't commit to it, because of that the guide mentions we don't assign people and seek quality and fast commits. Sorry if my original answer was uninformative. I hope you have a good day and happy coding.


Question: -   Your function must always return the entire `records` object. -   If `value` is an empty string, delete the given `prop` property from the album. -   If `prop` isn't `tracks` and `value` isn't an empty string, assign the `value` to that album's `prop`. <del> -   If `prop` is `tracks` and value isn't an empty string, add the `value` to the end of the album's `tracks` array. You need to create this array first if the album does not have a `tracks` property. </del> <ins> -   If `prop` is `tracks` and `value` isn't an empty string, you need to update the album's `tracks` array. First, if the album does not have a `tracks` property, assign it an empty array. Then add the `value` as the last item in the album's `tracks` array. </ins> **Note:** A copy of the `recordCollection` object is used for the tests. You should not directly modify the `recordCollection` object.

This part is still tripping people up Usually one piece or another gets lost: Maybe this is clearer Side note - I still don't love the fact that we say like a variable instead of like a string literal. I think that's confusing here. (I know, I know, the style guide hates "s) No response All No response
Agreed, it has the potential to be confusing. Can we reword to say: "If is the string and ..."
I'm still not clear on the reason why string literals in inline code blocks are forbidden by the style guide since it makes the instructions less clear in this case. do you have some context?
I don't remember the full reason, only that it was a decision made as part of our i18n efforts. We reference a discussion in but I can't for the life of me find where that discussion is.


Question: programmer = "CamperChan"; ``` <del> Note that when reassigning a variable that has already been declared, you do **not** use the `let` keyword. </del> <ins> Note that when reassigning a variable, you do **not** use the `let` keyword again. </ins> After your `console.log`, assign the value `"World"` to your `character` variable.

Currently on step number 5 there's a note that reads Note that when reassigning a variable that has already been declared, you do not use the let keyword. As it stands this note is incorrect and unnecessary. No code, just instructions re-wording. The note could be changed to: Note: You can only re-assign a variables that has been declared with Or we can simply remove it altogether instead. <img width="1217" alt="Screen Shot 2024-05-02 at 10 31 38" src=""- Device: [Laptop] OS: [MacOS 12.7.4] Browser: [Chrome] Version: [124.0.6367.91] No response
The note is correct. I think you are interpertering it wrong? It is saying does not need to be used when re-assinging the variable with a new value. edit: It is not saying that you can use any kind of keyword like or
I understand what's it's trying to convey, but it's written in a confusing way. Here's the text directly copied into ChatGPT for some additional context: <img width="820" alt="Screen Shot 2024-05-02 at 11 01 54" src=""
Text refers to potential situation when both assignments are using , ie: Depending on where exactly both are used, this can result in . - - x = 10; There's no on this line. It's one of the cases when chat doesn't know what it's talking about.
Hi thank you for creating the issue. As Sem pointed out, we don't think the note should be updated to because the new version communicates different information from the original. I think the confusion came from the word "declared". The word isn't needed since "reassigning" already implies that the variable has been declared, so I'd propose changing the sentence a little: cc'ing for input, since you're much more experienced with this kind of change than I am
Thanks for the input your proposal addresses the issue I presented
That change works for me. Let's open it up for first timers This has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors.


Question: programmer = "CamperChan"; ``` <del> Note that when reassigning a variable that has already been declared, you do **not** use the `let` keyword. </del> <ins> Note that when reassigning a variable, you do **not** use the `let` keyword again. </ins> After your `console.log`, assign the value `"World"` to your `character` variable.

If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the js let programmer = "Naomi"; programmer = "CamperChan"; ` Happy coding


Question: Your `#video` should have a `src` attribute. ```js <del> const el = document.getElementById('video') assert(!!el && !!el.src) </del> <ins> let el = document.getElementById('video') const sourceNode = el.children; let sourceElement = null; if (sourceNode.length) { sourceElement = [...video.children].filter(el => el.localName === 'source')[0]; } if (sourceElement) { el = sourceElement; } assert(el.hasAttribute('src')); </ins> ``` You should have a `form` element with an `id` of `form`.

The following test (user story) prevents my previously passing project from passing: Important: Notice I use instead of just I never claimed to be a UI expert Do we want to keep such a test? No response Unrelated No response
Maybe you should update your project Honestly I think small tweaks are going to be okay - my tribute page fails because the image needs a height now.
I am also happy with small tweaks, but we did (largely) want to keep the requirements exactly the same. The only change we agreed upon is to add requirements for tags.
Looks like they accommodated for the tag in that test. Maybe we can just add it here too.
although, I think it's good, that we moved on from the old test. tag is extremely useful in html, it has attribute that help developers use less needed css, which lead to better experience, . it should be accepted to use Edit: if you paste this code in it won't pass although there is a media query but in the html Edit: I changed the for easier testing


Question: editor.addAction({ id: 'toggle-accessibility', label: 'Toggle Accessibility Mode', <del> keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_E], </del> <ins> keybindings: [ monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_E, monaco.KeyMod.WinCtrl | monaco.KeyCode.KEY_E ], </ins> run: () => { const currentAccessibility = storedAccessibilityMode();

Even though on macOS it would seem that Ctrl+Enter does not work & Cmd+Enter does; website still tells you to use Ctrl+Enter. I think this might end up being confusing for some - and should be fairly straightforward of a change. All coding pages You must use macOS for this issue. to any coding challenge your changes will see button underneath says "Check your code (Ctrl + Enter)" Ctrl + Enter will happen. Cmd + Enter behaviour will occur. It should tell the user correct shortcut (Cmd + Enter) instead of (Ctrl + Enter) depending on the platform. <img width="647" alt="Screenshot 2022-06-09 at 16 52 28" src="https://user-"- Device: M1 MacBook Pro OS: macOS 12.0.1 Browser: Safari Version: 15.1 No response
I would like to handle this issue as a first contribution. My proposal would be to use (). Use Ctrl + Enter as a fallback and define a special case for macOS cases. Alternatively we could use () however that is not widely supported as opposed to . As far as I can tell on mobile we don't show modifier keys on the button; so I'll preserve that behaviour. I can't change the labels on this issue - I don't think this is severe enough to be classified as a bug based on definition; my apologies regarding that.
Hey thanks for raising this issue and don't worry about the labels, they need to be handled by maintainers. What you've suggested does sound good to me, so if you're happy to take this on, that's awesome.
I've created the PR however; I've updated non English translations as well in here to use dynamic values; however not really sure how to align it with the crowdin. Since updated translations should coincide with this change; any opinions on this?
Do not worry, I think you are putting too much effort into it. Simply drop the changes to those files and as the bot mentioned, they will get updated eventually via our translation workflow. As for the bug itself: I am 100% sure at some point we introduced a regression, because (in addition to the implicit Cmd + Enter) was working since the inception of the code editor. do you happen to know if this was just an accident with the new editor?


Question: editor.addAction({ id: 'toggle-accessibility', label: 'Toggle Accessibility Mode', <del> keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_E], </del> <ins> keybindings: [ monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_E, monaco.KeyMod.WinCtrl | monaco.KeyCode.KEY_E ], </ins> run: () => { const currentAccessibility = storedAccessibilityMode();

To be clear it should always work with regardless of the OS in addition to implicitly working with just like it was before.
I can't check this myself, since I don't have a mac, but it should work. This is the code: and could you try and reproduce the issue?
I've shot a short video of the behaviour I am seeing; if that helps.
That does help, yeah. It seems to be ignoring the command button entirely, which is odd. I can't investigate myself, but this will help anyone that has access to a Mac.
Thanks for the video I don't recall if ctrl+enter ever worked on mac - I may or may not have ever used it. I just hit buttons without looking I'm not sure if you are trying to show something specific with those code snippets - that's the code on main. Which results in the current behavior. Edit: I get it now - you were just showing the code and that it should be working. I thought you trying to show new changes or something. Here's the current behavior I see (all on mac) - there's some nuance... New RWD: Execute: only command+enter works on mac Submit: Enter alone works, so any key+enter works Legacy RWD, JS, etc: Execute: Only cmd+enter works Submit: Enter alone does not work - both ctrl+enter or command+enter do work Multiple choice Python video questions: Execute: Enter alone does not work - ctrl+enter and cmd+enter work Submit: Enter alone does not work - both ctrl+enter or command+enter do work Projects with URL inputs - e.g. front end libs cert project, or backend api challenges, etc: Execute: Enter alone works cause it's a form I suppose, which also means any key+enter works Submit: Enter alone does not work - both ctrl+enter or command+enter do work The last three groups there have the same submit modal, so the behavior is the same on all of them. What I see is that the submit modal, and the video question both allow [ctrl or cmd] +enter - we should see what those are doing. Looking into to it...
K, I think I found a fix. ctrl+enter works when the hotkeys package/component is used. So crtl+enter actually does work on the legacy challenges when the instructions are focused.


Question: editor.addAction({ id: 'toggle-accessibility', label: 'Toggle Accessibility Mode', <del> keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_E], </del> <ins> keybindings: [ monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_E, monaco.KeyMod.WinCtrl | monaco.KeyCode.KEY_E ], </ins> run: () => { const currentAccessibility = storedAccessibilityMode();

When the editor is focused, those hotkeys don't get used, the actions/hotkeys we add to the editor take over. I made ctrl+enter work when the editor is focused by changing that line 431 mentioned to this: That should work. There's a number of actions in that file that use the same hotkeys - lines 457 and 469 for example. There may be others. I think we should be safe to change all those. Do you mind playing with that a bit and updating the PR to make those changes.
Nice work, Tom. I thought CtrlCmd was "Ctrl or Command", but it must be Ctrl on Windows and Command on Mac :man_facepalming: I guess this has never worked properly.
happy to give it a look and update the PR. Thank you
Here's an I had created sometime back when working on the . Apparently the logic goes like this - the first word is Windows and the second one is Mac button.