Question:
Advanced Node and Express section needs package versions to the instructions, as discussed in: Example: " Add <codepassport.socketio</codeversion <codeX.X.X</code, <codeconnect-mongo</codeversion <codeX.X.X</code, and <codecookie-parser</codeversion <codeX.X.X</codeas dependencies and require them as <codepassportSocketIo</code, <codeMongoStore</code, and <codecookieParser</coderespectfully. " Before this is undertaken: [x] Wait for to be merged [ ] Discuss which versions to use and how to convey this ( or )
I am leaning more toward the requirement, myself. With the carat prefix, will install the latest minor version. In theory, updates to the minor version are backwards compatible and shouldn't create any issues with the tests or challenges. However, minor versions can include depreciation notices like . The feature will still work, but this could be confusing to a camper. Using the tilde prefix means will install the latest patch version, which includes bug fixes but shouldn't lead to any depreciation notices. I think this will offer the best long-term compatibility with our tests and challenge instructions.
Well, it has happened: Last versions which definitely work: I have tested this. Now, discussion: 1) Just ask for to be installed 2) Also change the lesson/code to work with this latest version?
Hey how is this show stopper coming along?
Ah yes... I have updated the label, because it should have been removed by . Can a PR automatically remove an issue's label? Otherwise, this issue is still open and help wanted , as there are many packages which need their versioning fixed. If no one else, I can slot in some time for this tomorrow.
No rush. Thanks for confirming, I have removed the assignment since this is no longer a showstopper.
thank you so much for the Thank you for the suggestion. It helped me alot

To set this up properly, we need to have a serialize function and a deserialize function. In Passport, we create these with `passport.serializeUser( OURFUNCTION )` and `passport.deserializeUser( OURFUNCTION )` <del> The `serializeUser` is called with 2 arguments, the full user object and a callback used by passport. A unique key to identify that user should be returned in the callback, the easiest one to use being the user's `_id` in the object. It should be unique as it generated by MongoDB. Similarly, `deserializeUser` is called with that key and a callback function for passport as well, but, this time, we have to take that key and return the full user object to the callback. To make a query search for a Mongo `_id`, you will have to create `const ObjectID = require('mongodb').ObjectID;`, and then to use it you call `new ObjectID(THE_ID)`. Be sure to add MongoDB as a dependency. You can see this in the examples below: </del> <ins> The `serializeUser` is called with 2 arguments, the full user object and a callback used by passport. A unique key to identify that user should be returned in the callback, the easiest one to use being the user's `_id` in the object. It should be unique as it generated by MongoDB. Similarly, `deserializeUser` is called with that key and a callback function for passport as well, but, this time, we have to take that key and return the full user object to the callback. To make a query search for a Mongo `_id`, you will have to create `const ObjectID = require('mongodb').ObjectID;`, and then to use it you call `new ObjectID(THE_ID)`. Be sure to add `mongodb@~3.6.0` as a dependency. You can see this in the examples below: </ins> ```js passport.serializeUser((user, done) => {


Question:
Advanced Node and Express section needs package versions to the instructions, as discussed in: Example: " Add <codepassport.socketio</codeversion <codeX.X.X</code, <codeconnect-mongo</codeversion <codeX.X.X</code, and <codecookie-parser</codeversion <codeX.X.X</codeas dependencies and require them as <codepassportSocketIo</code, <codeMongoStore</code, and <codecookieParser</coderespectfully. " Before this is undertaken: [x] Wait for to be merged [ ] Discuss which versions to use and how to convey this ( or )
I am leaning more toward the requirement, myself. With the carat prefix, will install the latest minor version. In theory, updates to the minor version are backwards compatible and shouldn't create any issues with the tests or challenges. However, minor versions can include depreciation notices like . The feature will still work, but this could be confusing to a camper. Using the tilde prefix means will install the latest patch version, which includes bug fixes but shouldn't lead to any depreciation notices. I think this will offer the best long-term compatibility with our tests and challenge instructions.
Well, it has happened: Last versions which definitely work: I have tested this. Now, discussion: 1) Just ask for to be installed 2) Also change the lesson/code to work with this latest version?
Hey how is this show stopper coming along?
Ah yes... I have updated the label, because it should have been removed by . Can a PR automatically remove an issue's label? Otherwise, this issue is still open and help wanted , as there are many packages which need their versioning fixed. If no one else, I can slot in some time for this tomorrow.
No rush. Thanks for confirming, I have removed the assignment since this is no longer a showstopper.
thank you so much for the Thank you for the suggestion. It helped me alot

It's time to set up *Passport* so we can finally start allowing a user to register or login to an account! In addition to Passport, we will use Express-session to handle sessions. Using this middleware saves the session id as a cookie in the client and allows us to access the session data using that id on the server. This way we keep personal account information out of the cookie used by the client to verify to our server they are authenticated and just keep the *key* to access the data stored on the server. <del> To set up Passport for use in your project, you will need to add it as a dependency first in your package.json. `"passport": "^0.3.2"` </del> <ins> To set up Passport for use in your project, you will need to add it as a dependency first in your package.json. `passport@~0.4.1` </ins> <del> In addition, add Express-session as a dependency now as well. Express-session has a ton of advanced features you can use but for now we're just going to use the basics! `"express-session": "^1.15.0"` </del> <ins> In addition, add Express-session as a dependency now as well. Express-session has a ton of advanced features you can use but for now we're just going to use the basics! `express-session@~1.17.1` </ins> You will need to set up the session settings now and initialize Passport. Be sure to first create the variables 'session' and 'passport' to require 'express-session' and 'passport' respectively.


Question:
Advanced Node and Express section needs package versions to the instructions, as discussed in: Example: " Add <codepassport.socketio</codeversion <codeX.X.X</code, <codeconnect-mongo</codeversion <codeX.X.X</code, and <codecookie-parser</codeversion <codeX.X.X</codeas dependencies and require them as <codepassportSocketIo</code, <codeMongoStore</code, and <codecookieParser</coderespectfully. " Before this is undertaken: [x] Wait for to be merged [ ] Discuss which versions to use and how to convey this ( or )
I am leaning more toward the requirement, myself. With the carat prefix, will install the latest minor version. In theory, updates to the minor version are backwards compatible and shouldn't create any issues with the tests or challenges. However, minor versions can include depreciation notices like . The feature will still work, but this could be confusing to a camper. Using the tilde prefix means will install the latest patch version, which includes bug fixes but shouldn't lead to any depreciation notices. I think this will offer the best long-term compatibility with our tests and challenge instructions.
Well, it has happened: Last versions which definitely work: I have tested this. Now, discussion: 1) Just ask for to be installed 2) Also change the lesson/code to work with this latest version?
Hey how is this show stopper coming along?
Ah yes... I have updated the label, because it should have been removed by . Can a PR automatically remove an issue's label? Otherwise, this issue is still open and help wanted , as there are many packages which need their versioning fixed. If no one else, I can slot in some time for this tomorrow.
No rush. Thanks for confirming, I have removed the assignment since this is no longer a showstopper.
thank you so much for the Thank you for the suggestion. It helped me alot

The following challenges will make use of the `chat.pug` file. So, in your `routes.js` file, add a GET route pointing to `/chat` which makes use of `ensureAuthenticated`, and renders `chat.pug`, with `{ user: req.user }` passed as an argument to the response. Now, alter your existing `/auth/github/callback` route to set the `req.session.user_id = req.user.id`, and redirect to `/chat`. <del> Add `http` and `socket.io` as a dependency and require/instantiate them in your server defined as follows: </del> <ins> Add `socket.io@~2.3.0` as a dependency and require/instantiate it in your server defined as follows, with `http` (comes built-in with Nodejs): </ins> ```javascript const http = require('http').createServer(app);


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: The usage of the word "argument" ist unclear to me. The title of this challenge uses the word "parameter". Then the instructions state: "If an arrow function has a single argument, the parentheses enclosing the argument may be omitted." But the following snippet cited from the instructions shows the parameter "item" without parentheses: The functions are never invoked with an argument in the examples. As I understand it the sentence should say: "If an arrow function has a single parameter, the parentheses enclosing the parameter may be omitted." Add a Link to the page with the problem: or, 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):
Hello~! I agree that the verbiage is wrong here. should probably be replaced with in the examples and text, with the exception of the top line (which, at a quick glance, is the only correct use of ):
These are the ones that should be changed, I think. In fact, we could use instead.
I like that approach. Think this could be opened up to first timers?
I would go for: Just like a regular function, you can pass arguments into an arrow function. If an arrow function has a single parameter, the parentheses enclosing the parameter may be omitted. It is possible to pass more than one argument into an arrow function.
Sure, that works.

```js // doubles input value and returns it const doubler = (item) => item * 2; <ins> doubler(4); // returns 8 </ins> ``` <del> If an arrow function has a single argument, the parentheses enclosing the argument may be omitted. </del> <ins> If an arrow function has a single parameter, the parentheses enclosing the parameter may be omitted. </ins> ```js <del> // the same function, without the argument parentheses </del> <ins> // the same function, without the parameter parentheses </ins> const doubler = item => item * 2; ```


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: The usage of the word "argument" ist unclear to me. The title of this challenge uses the word "parameter". Then the instructions state: "If an arrow function has a single argument, the parentheses enclosing the argument may be omitted." But the following snippet cited from the instructions shows the parameter "item" without parentheses: The functions are never invoked with an argument in the examples. As I understand it the sentence should say: "If an arrow function has a single parameter, the parentheses enclosing the parameter may be omitted." Add a Link to the page with the problem: or, 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):
Hello~! I agree that the verbiage is wrong here. should probably be replaced with in the examples and text, with the exception of the top line (which, at a quick glance, is the only correct use of ):
These are the ones that should be changed, I think. In fact, we could use instead.
I like that approach. Think this could be opened up to first timers?
I would go for: Just like a regular function, you can pass arguments into an arrow function. If an arrow function has a single parameter, the parentheses enclosing the parameter may be omitted. It is possible to pass more than one argument into an arrow function.
Sure, that works.

```js // multiplies the first input value by the second and returns it const multiplier = (item, multi) => item * multi; <ins> multiplier(4, 2); // returns 8 </ins> ``` </section>


Question: GitHub yesterday (November 16) which our Cypress CI depended. So, currently all Cypress tests in CI are failing. Just using the latest version of the Cypress GitHub action should do the trick. (We are currently running the outdated action.) !

run: npm run seed - name: Cypress run <del> uses: cypress-io/github-action@v1 </del> <ins> uses: cypress-io/github-action@v2 </ins> with: record: ${{ env.CYPRESS_RECORD_KEY != 0 }} build: npm run build


Question:
Describe your problem and how to reproduce it: While working on the Sudoku solver project, one scenario came up that wasn't clear to me how to handle. The scenario is what do you do, if I ask to check a value of a cell with an existing value? For my project, I chose to return a conflict with the row, column, and region. However, I checked what the example app returns. The results it returns are logically inconsistent, which tells me this use case is undefined. For the example app: https://sudoku- coordinate enter C3, for value enter 2 (the existing value), click Check Placement returns value to 9, App returns value to 1, App returns These response are not logically consistent. For the first one, it appears to be checking against all of the existing values in the puzzle. For the second and third cases, it appears to be checking after replacing the value. I would expect this use case to be defined as either, it's a conflict, because there is an existing value at that cell or to replace the value in that cell and then check if it is valid or not and return the appropriate results. Add a Link to the page with the problem: ://sudoku- Tell us about your browser and operating system: Browser Name: Google Chrome Browser Version: 87.0.4280.67 (Official Build) (x86_64) Operating System: macOS Mojave 10.14.6
Yes, seems odd that you can place a value over an existing spot and it can return as valid Seems like this should be the response Or something along those lines
I do agree that this should be handled as a valid placement (given that the number is already present in that cell). Unless there is objection/disagreement, I'd be willing to open this up for contribution.
I also vote to make it behave as if it replaces the cell before checking validity. Or something along those lines. I have opened this up for contributions.

}; ``` <ins> If `value` submitted to `/api/check` is already placed in `puzzle` on that `coordinate`, the returned value will be an object containing a `valid` property with `true` if `value` is not conflicting. ```js async (getUserInput) => { const input = '..9..5.1.85.4....2432......1...69.83.9.....6.62.71...9......1945....4.37.4.3..6..'; const coordinate = 'C3'; const value = '2'; const data = await fetch(getUserInput('url') + '/api/check', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ puzzle: input, coordinate, value }) }); const parsed = await data.json(); assert.property(parsed, 'valid'); assert.isTrue(parsed.valid); }; ``` </ins> If the puzzle submitted to `/api/check` contains values which are not numbers or periods, the returned value will be `{ error: 'Invalid characters in puzzle' }` ```js


Question:
Describe your problem and how to reproduce it: Challenge description gives slightly different task, to what needs to be done to pass tests. Challenge is about , which looks at the beginning like (skipping zero at start): Challenge description asks to create function returning n-th member of the sequence. However expected values in tests, and sample solution don't match that. sternBrocot(2) should return 3. sternBrocot(3) should return 5. sternBrocot(5) should return 11. sternBrocot(7) should return 19. sternBrocot(10) should return 39. Function matching tests would be one returning at which position in sequence number is encountered for first time. Original challenge on Rosetta Code - have both these variations as a part of task, so that's most likely how it sneaked in. Add a Link to the page with the problem:
I vote to have the function return the position in the sequence of the argument. We wouldn't need to change the tests, just the description.
I'm in favour of that approach as well.

# --instructions-- <del> Create a function that returns the $ n^{th} $ member of the sequence using the method outlined above. </del> <ins> Create a function that returns the position in the Stern-Brocot sequence at which $ n $ is first encountered, where the sequence is generated with the method outlined above. Note that this sequence uses 1 based indexing. </ins> # --hints--


Question:
Describe the bug Last week, I saw multiple posts where people asking for help didn’t write down what they needed help with. I think the help post template may be confusing some folks. Screenshots ! Additional context “Tell us what’s happening” looks a bit like an overall heading. I suggest the following changes to make it more obvious that people are supposed to write something down: Mockup !
Hello there, Thank you, for taking the time to open this. I believe it would help some Campers understand the need to add more information. However, I suspect the large majority just post without reading any further. The Discourse software does have a lot of cool features aiding the topic creating (e.g. Information about informative titles, showing similar topics). If others are in agreement, this would be an easy implementation, and could be put up for first timers? That being said, I find dedent to be pesky.
I'm not big on the idea of adding an extra heading. Perhaps just the extra describe prompt: Tell us what's happening: Describe your issue in detail here Your code so far: Your browser information: blah blah blah Mildly related - I think we should add a colon after "Your code so far" to match the other headings.
If it's a first-timer I'll let somebody do it but if not I can take care of making the changes. Your call!
Any decision on if we're opening this for first timers?
Can I work on this issue, being my first contribution to freeCodeCamp?
please go ahead.
Hi, I saw that this issue wanted to be done by someone a few days ago, but its still not been closed, I am also an newbie and am really eager to contribute so would be happy to help, and close it today. Was trying to find the template to change it, but couldn't find the file. Would it be possible for someone to point me to the right file? Thanks :)
Hey it's this one -
Thanks

let textMessage = dedent( `**Tell us what's happening:** <ins> Describe your issue in detail here. </ins> ${ projectFormValues.length


Question:
Maybe this was done intentionally to give learning programmers more leeway. If that's not the case though, it's a bug. Describe your problem and how to reproduce it: In the -challenge, the request clearly is to add the new tag AFTER the previous p-tag. However, the following code also gets accepted as a correct solution. Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Firefox Browser Version: 87.0 (64-bit) Operating System: Linux (Linux Mint) If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): ! !
I think this can go either way, but I'm leaning towards changing the directions, and removing the to give the more leeway for newcomers, to somewhat like: This is ofcourse just my opinion, I would love for others to pitch in...
I like the change. The less explicit version seems to better describe how the page is already behaving.
I agree that this sounds like a good change :) Maybe is the way to go, to indicate it shouldn't be over the tag.
As we do not want any confusion about what the element should wrap. I suggest the following: I am opening this up to first timers 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. 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
Sure, I'll do my best!
See . I wrote this. I changed the second line to improve it with , while still keeping it similar to the previous description.

# --instructions-- <del> Create a second `p` element after the existing `p` element with the following kitty ipsum text: `Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.` </del> <ins> Create a second `p` element with the following kitty ipsum text: `Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.` </ins> <del> Then, create a `main` element and nest the two `p` elements inside the `main` element. </del> <ins> Then, create a `main` element and nest only the two `p` elements inside the `main` element. </ins> # --hints--


Question: There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved. Error type: Cannot find preset's package (githubwhitesource/merge-confidence:beta)

{ "matchUpdateTypes": ["minor", "patch", "pin", "digest"], "matchCurrentVersion": "!/^0/", <del> "automerge": true }, { </del> <ins> "automerge": true, </ins> "rebaseWhen": "behind-base-branch" } ],


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. -- <!-- Add a link to the coding challenge with the problem. --<!-- Copy and paste the code from the editor that you used in between the back-ticks below: -- Expected to see Clothing withdrawal transactions (-25.55) on output but only seeing the 'transfer from food $50'. Transfer method passes but the food transfer of 50 but it is 0. <!-- Add a clear and concise description of what you expected to happen. --<!-- If applicable, add screenshots to help explain your problem. you can drag and drop, png, jpg, gif, etc. in this box. --<!-- Please complete the following information. --- Device: PC Desktop OS: Windows 10 Browser: Firefox Version: 93.0 <!-- Add any other context about the problem here. --I've since updated my transfer method to use the withdrawal and deposit functions to accomplish the task correctly. It seems the Transfer method test case needs a bit of an upgrade to make sure withdrawals are working.
The test for transfer function is not checking if the amount is deducted or , But only checks for the ledger entries. Adding two additional tests for deduction and addition will fix this issue.
I tossed up a PR for this: I two asserts to the existing test.

h4.negative-10.text-nowrap Community Builder img.profile-image(src='https://s3.amazonaws.com/freecodecamp/branden-byers.jpg' alt="Branden Byers picture") h4.text-nowrap Madison, Wisconsin <del> p.negative-10 "I'm a massage therapist and Stay-at-home-dad. I learned Hypercard, then Rails, but now I feel at home with JavaScript." </del> <ins> p.negative-10 "Cookbook author and stay-at-home-dad. Started coding as a kid, got distracted, but now I'm back in full JavaScript force!" </ins> .col-xs-12.col-sm-4.col-md-3.team-member h3.negative-10.text-nowrap Michael Johnson h4.negative-10.text-nowrap Nonprofit Coordinator


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. -- <!-- Add a link to the coding challenge with the problem. --<!-- Copy and paste the code from the editor that you used in between the back-ticks below: -- Expected to see Clothing withdrawal transactions (-25.55) on output but only seeing the 'transfer from food $50'. Transfer method passes but the food transfer of 50 but it is 0. <!-- Add a clear and concise description of what you expected to happen. --<!-- If applicable, add screenshots to help explain your problem. you can drag and drop, png, jpg, gif, etc. in this box. --<!-- Please complete the following information. --- Device: PC Desktop OS: Windows 10 Browser: Firefox Version: 93.0 <!-- Add any other context about the problem here. --I've since updated my transfer method to use the withdrawal and deposit functions to accomplish the task correctly. It seems the Transfer method test case needs a bit of an upgrade to make sure withdrawals are working.
The test for transfer function is not checking if the amount is deducted or , But only checks for the ledger entries. Adding two additional tests for deduction and addition will fix this issue.
I tossed up a PR for this: I two asserts to the existing test.

h4.negative-10.text-nowrap Live Content Manager img.profile-image(src='https://s3.amazonaws.com/freecodecamp/jason-rueckert.jpg' alt="Jason Rueckert's picture") h4.text-nowrap Seattle, Washington <del> p.negative-10 "My high school job was testing basketball shoes for Nike. I learned code to work smarter, not harder. I have no thyroid." </del>  No newline at end of file <ins> p.negative-10 "My high school job was testing basketball shoes for Nike. I learned code to work smarter, not harder. I have no thyroid." </ins>


Question: In the The Property section of Curriculum File Structure documentation there's reference to file. That file no longer exists, and the relevant helper function is now in file. It's needed to point to the correct file and/or adjust the wording in the section. Here are the files that you should be looking at to work on a fix: 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.

## The `dashedName` Property <del> The `dashedName` property is used to generate the URL path for the superblock, block, or challenge. These should generally match what the `/utils/dasherize.js` helper would output for the file name. </del> <ins> The `dashedName` property is used to generate the URL path for the superblock, block, or challenge. These should generally match what the `/utils/slugs.js` helper would output for the file name. </ins>


Question:
Step 36 says However this is false, anchor tags are not self-closing. I believe it meant to say which is the self-closing tag introduced in the previous steps.  Wasn't sure where to report this so I also posted about it on the forums at .
Good eye!
Hi ! Thank you for bringing up this issue. This is an easy fix to change anchor elements to img elements. I have the first timers only label for those who are interested in making their first PR.
Could I take this issue? I'm looking for a good first contribution.
Hi ! Any issue with the first timers only label is up for grabs. The first PR that has the correct changes will be reviewed and merged into the main codebase. Here is the file that needs changing. Happy contributing !

# --description-- <del> The `input` element allows you several ways to collect data from a web form. Like anchor (`a`) elements, `input` elements are <dfn>self-closing</dfn> and do not need closing tags. </del> <ins> The `input` element allows you several ways to collect data from a web form. Like `img` elements, `input` elements are <dfn>self-closing</dfn> and do not need closing tags. </ins> Nest an `input` element in the `form` element.


Question:
The following code passes all the challenge's tests, but it is incorrect (it fails to find if is the last element of The code above should not pass the challenge. ! Device: Macbook Pro OS: 10.13.6 Browser: Firefox Version: 97.0.1
Checking against the solution on the forum, it appears that should return . We could add a test to the challenge that checks this, which would resolve this issue.
Yes, that should be all it takes to resolve this issue.
I'm going to go ahead and open this up for first time contributors. A PR to resolve this issue will: Add a test to that asserts returns . If you are interested in working on this issue, we recommend starting with our , and you are welcome to join our if you have any questions.
can I do the code in python ?
No. Our challenges run on Javascript. In this case, you don't need to write a new impl of the algorithm or anything. You just need to add an additional test case that matches the one given above.
Sure, unless wants to take this, I will

assert.deepEqual(binarySearch(_testArray, 13), [13]); ``` <ins> `binarySearch(testArray, 70)` should return `[13, 19, 22, 49, 70]`. ```js assert.deepEqual(binarySearch(_testArray, 70), [13, 19, 22, 49, 70]); ``` </ins> # --seed--


Question:
related to In the new Responsive Design curriculum the words tag and element are used interchangebly The correct use should be element and tag (or at least, element is the whole thing, tag is the one that start with and end with and can be an opening tag, a closing tag or a self-closing tag). Should this be changed in the new curriculum?
Do we have many/any incorrect uses?
actually mostly not - there is some ambiguity with in the second step of the accessibility quiz I have been hasty
My concern was with these steps, which are about meta tags
That does look like something that should be standardised. Thank you, for listing them. I am opening this issue up for first timers only. The files that need changed are listed in the above reply. What needs changed There are a few uses of the word which should be changed to . Example Original: New: Note Not all uses of the word should be changed. Example: 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. 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
Hi - is it ok if i pick this up? First timer here

# --description-- <del> You may be familiar with the `meta` tag already; it is used to specify information about the page, such as the title, description, keywords, and author. </del> <ins> You may be familiar with the `meta` element already; it is used to specify information about the page, such as the title, description, keywords, and author. </ins> <del> Give your page a `meta` tag with an appropriate `charset` value. </del> <ins> Give your page a `meta` element with an appropriate `charset` value. </ins> The `charset` attribute specifies the character encoding of the page, and, nowadays, `UTF-8` is the only encoding supported by most browsers.


Question:
related to In the new Responsive Design curriculum the words tag and element are used interchangebly The correct use should be element and tag (or at least, element is the whole thing, tag is the one that start with and end with and can be an opening tag, a closing tag or a self-closing tag). Should this be changed in the new curriculum?
Do we have many/any incorrect uses?
actually mostly not - there is some ambiguity with in the second step of the accessibility quiz I have been hasty
My concern was with these steps, which are about meta tags
That does look like something that should be standardised. Thank you, for listing them. I am opening this issue up for first timers only. The files that need changed are listed in the above reply. What needs changed There are a few uses of the word which should be changed to . Example Original: New: Note Not all uses of the word should be changed. Example: 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. 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
Hi - is it ok if i pick this up? First timer here

# --description-- <del> Continuing with the `meta` tags, a `viewport` definition tells the browser how to render the page. Including one betters visual accessibility on mobile, and improves _SEO_ (search engine optimisation). </del> <ins> Continuing with the `meta` elements, a `viewport` definition tells the browser how to render the page. Including one betters visual accessibility on mobile, and improves _SEO_ (search engine optimisation). </ins> Add a `viewport` definition with a `content` attribute detailing the `width` and `initial-scale` of the page.


Question:
related to In the new Responsive Design curriculum the words tag and element are used interchangebly The correct use should be element and tag (or at least, element is the whole thing, tag is the one that start with and end with and can be an opening tag, a closing tag or a self-closing tag). Should this be changed in the new curriculum?
Do we have many/any incorrect uses?
actually mostly not - there is some ambiguity with in the second step of the accessibility quiz I have been hasty
My concern was with these steps, which are about meta tags
That does look like something that should be standardised. Thank you, for listing them. I am opening this issue up for first timers only. The files that need changed are listed in the above reply. What needs changed There are a few uses of the word which should be changed to . Example Original: New: Note Not all uses of the word should be changed. Example: 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. 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
Hi - is it ok if i pick this up? First timer here

# --description-- <del> Another important `meta` tag for accessibility and SEO is the `description` definition. The value of the `content` attribute is used by search engines to provide a description of your page. </del> <ins> Another important `meta` element for accessibility and SEO is the `description` definition. The value of the `content` attribute is used by search engines to provide a description of your page. </ins> <del> Add a `meta` tag with the `name` attribute set to `description`, and give it a useful `content` attribute. </del> <ins> Add a `meta` element with the `name` attribute set to `description`, and give it a useful `content` attribute. </ins> # --hints-- <del> You should add a new `meta` tag to the `head`. </del> <ins> You should add a new `meta` element to the `head`. </ins> ```js assert.equal(document.querySelectorAll('meta').length, 3);


Question:
Steps to reproduce the behavior: on toggle button(code folding) on line 36 of the code editor (check screenshots) error no idea ! ! <!-- Please complete the following information. --- Device: Laptop OS: Windows 10 Browser: firefox Version: 98.0.1 (64-bit) <!-- Add any other context about the problem here. --
The UI is designed with the assumption that the editable region is visible and will be surrounded by the instructions and the Check Your Code button. With the editable region hidden the UI will look quite confusing. I think the best solution would simply be to disable folding for project steps. Folding is an editor option, , so we can disable it.
I'd be in favour of that solution. Should just be a matter of adding to this editor options object right?
I think so, yeah. We could make it conditional: false if there's an editable region and true otherwise. That might be nice if you're working on a project using the multifile editor, since they can be quite large and don't have editable regions.
I'll go ahead and open this one up for contribution then

editorDidMount={editorDidMount} editorWillMount={editorWillMount} onChange={onChange} <del> options={options} </del> <ins> options={{ ...options, folding: !hasEditableRegion() }} </ins> theme={editorTheme} /> </span>


Question:
I see here that we are intentionally supporting confusing but technically correct syntax. In light of this, we should remove the note here All of these are non-standard things that technically work but nobody actually does in practice. We should either go out of our way to support this sort of thing or not. If we are going out of our way to support this sort of thing, then there really isn't much point of letting the users know that it's unconventional syntax. See also: Personally, I think it's valuable to teach the learners how to write code that others expect to see so that it's easier for them to get hired, but we really need to be consistent. We should either help them with conventions or not bother. If we aren't doing anything after making the note, then it's just visual noise and should be removed.
For what it's worth: This code fails the "bracket notation" test, presumably because of the space. And I'm of the opinion that it should stay that way (I'd be okay with updating the test to allow spacing and adding a third test that clarifies "you should not have spacing"). That being said, there are areas where we are more lenient on the spacing/conventional style, which IMHO is okay if that's not the concept being taught/tested.
For what it's worth here's what I think about formatting. In practice the likes of prettier have rendered manual formatting unnecessary and unhelpful - I don't need to see diff noise obscuring actual code changes. If we're overly picky about formatting then I can see that creating a frustrating experience. However, we should provide nicely formatted code in the examples. That way learners can pick up good habits simply by copying.
I'm generally pretty flexible with formatting. I don't think we have any business requiring a specific brace and indentation style. I'll format utterly unformatted code when someone asks for help and explain how it helps me and the learner discuss the code more easily, but that's a very useful context to discuss readability. But the extra spaces in the above three examples are so unusual and uncommon of syntax that it feels strange to make our tests permit them in the recent couple of issues while also calling it out here as something to not do.
I disagree with both propositions — the note is fine, we should encourage standard style. But also let's not be a PITA. I'll copy my other comment here, so we can have a discussion in a single place:
If we aren't going to enforce/test it, it's just pointless noise that needs to be removed. Text that doesn't related to what is being tested just fills the screen. We have enough trouble getting users to actually read the challenge text without including text we intend for them to ignore.
From an accessibility perspective, I don't think we should be strict on formatting that does not affect the execution of the code. One example that comes to mind is people who are listening to the code. Screen readers don't announce spaces by default so it might not be obvious that there is an extraneous space between the variable name and the bracket notation. I don't think the tests should penalize them for this when the code executes just fine. On a side note, you can use the keyboard shortcut in monaco to format the code and it will remove the space between the variable name and brackets (I just tested it). So I suppose we could require everyone to format their code properly before testing, but this seems like overkill. Or perhaps there is a way to auto-format the code when the user clicks the test button?
I'm not thrilled about intending this syntax to pass, but I find the accessibility concern more compelling than just allowing highly uncommon syntax variations because it can run in other JS environments. But I still say that it we aren't going to test it, then the spacing note should not be there. If its not part of the challenge outcomes, then it's noise. We already struggle to get learners to actually read the parts of the text that relate to their ability to pass the challenge.
Allow me to revise my previous answer just a little. I think I was assuming that this extraneous space issue was being tested in all challenges, but now I'm realizing that it may apply to only this one particular challenge. If so, then as long as the challenge instructions make it clear that this is a requirement to pass the challenge, and there is a clear error message that indicates the reason the test failed is due to the extraneous space, then I think it is OK to leave this test in there if it's deemed important enough to keep. But in general, I do not think such formatting issues should cause a test to fail (as explained above).
Thanks for the thoughts & Here is what we should do: the note. IMHO you all are correct in assuming it does nothing other than draw attention to a confusing notion. should support the technically correct syntax (ignore testing for it, if we are). may be a good idea, but I am afraid of accidentally introducing something else.

The `console.log(array[0])` prints `50`, and `data` has the value `60`. <del> **Note:** There shouldn't be any spaces between the array name and the square brackets, like `array [0]`. Although JavaScript is able to process this correctly, this may confuse other programmers reading your code. </del> # --instructions-- Create a variable called `myData` and set it to equal the first value of `myArray` using bracket notation.


Question: The use of the term "Gender" as an objective feature variable type with a categorical code value type seems to be an outdated understanding of gender and can be potentially offensive or insulting to those who would identify with the LQBT+ community as there are potentially too many genders to possibly categorize I would suggest the use of the term "Sex" as opposed to "Gender" as this will not effect the overall behavior of the project while also ensuring a safe and inclusive environment for those who identify as genders other than man or woman

extends ../layout block content <del> .jumbotron .col-sm-8.col-sm-offset-2 form(method='POST') </del> <ins> .col-sm-8.col-sm-offset-2.jumbotron form(method='POST', action="/forgot") </ins> h1 Forgot Password input(type='hidden', name='_csrf', value=_csrf) .form-group


Question: The use of the term "Gender" as an objective feature variable type with a categorical code value type seems to be an outdated understanding of gender and can be potentially offensive or insulting to those who would identify with the LQBT+ community as there are potentially too many genders to possibly categorize I would suggest the use of the term "Sex" as opposed to "Gender" as this will not effect the overall behavior of the project while also ensuring a safe and inclusive environment for those who identify as genders other than man or woman

button.btn.btn-primary(type='submit') i.fa.fa-key | Reset Password


Question:
found an issue: Unexpected shorthand "padding" after "padding-bottom" (declaration-block-no-shorthand-property-overrides) It's currently on:
I'm happy to fix this (and remove the units from zero values also in that file), but I'm not sure what the preferred replacement is for the padding. Should I just remove the padding: and add lines for padding-top: 0; padding-right: 15px; to reflect the styles currently specified by the padding: 0 15px 15px line?
I would delete , you can start and these question will be answer by reviewers if they need changes later

.footer-container .col-header { flex: 0 0 100%; <del> padding-bottom: 15px; </del> font-weight: 700; font-size: 16px; text-align: center;


Question:
found an issue: Unexpected shorthand "padding" after "padding-bottom" (declaration-block-no-shorthand-property-overrides) It's currently on:
I'm happy to fix this (and remove the units from zero values also in that file), but I'm not sure what the preferred replacement is for the padding. Should I just remove the padding: and add lines for padding-top: 0; padding-right: 15px; to reflect the styles currently specified by the padding: 0 15px 15px line?
I would delete , you can start and these question will be answer by reviewers if they need changes later

display: flex; flex-direction: row; flex-wrap: wrap; <del> margin: 0px; </del> <ins> margin: 0; </ins> } .footer-col {


Question:
found an issue: Unexpected shorthand "padding" after "padding-bottom" (declaration-block-no-shorthand-property-overrides) It's currently on:
I'm happy to fix this (and remove the units from zero values also in that file), but I'm not sure what the preferred replacement is for the padding. Should I just remove the padding: and add lines for padding-top: 0; padding-right: 15px; to reflect the styles currently specified by the padding: 0 15px 15px line?
I would delete , you can start and these question will be answer by reviewers if they need changes later

} .footer-col a { <del> padding: 5px 0px; </del> <ins> padding: 5px 0; </ins> } .footer-desc-col {


Question:
found an issue: Unexpected shorthand "padding" after "padding-bottom" (declaration-block-no-shorthand-property-overrides) It's currently on:
I'm happy to fix this (and remove the units from zero values also in that file), but I'm not sure what the preferred replacement is for the padding. Should I just remove the padding: and add lines for padding-top: 0; padding-right: 15px; to reflect the styles currently specified by the padding: 0 15px 15px line?
I would delete , you can start and these question will be answer by reviewers if they need changes later

flex-direction: column; } .footer-right { <del> padding-left: 0px; </del> <ins> padding-left: 0; </ins> } .footer-container .col-spacer { margin-top: 40px;


Question:
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

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`


Question:
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

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`.


Question:
! I "of" It is missing orginally. there is no code, just lesson typo for the text to read "front of it" No response Device: Omen Desktop OS: Windows 10 Browser: Chrome Version: version of? Sry if the System section isnt very clear, its just a typo so i assume it doesnt matter all to much.
Thanks for opening this issue. It looks like this issue is something that "first-time" code contributors to this repository can fix. Here are the files that you should be looking at to work on: List of files:  Please make sure you read , we prioritize contributors following the instructions in our guides. Join us in our chat room or the forum if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We prioritize accepting the most quality contribution, followed by the earliest request. Happy contributing.
i it to my pull request it took me a while to find it lol
No clue what to do to help with files or fixing stuff tbh, I'm still pretty new to all this GitHub stuff. Someone might be much better for this than I. But hopefully ill have the experience in the future to help with things like this, big or small.
I see that it's a perfect start for beginners like me, however using repo or GitHub is not easy that much :D. For this issue, finding correct challenge on my local files and fixing it is an achievement for me. I am excited for more. :)
Contributing to open-source is a rewarding experience. You get to learn so much, things like coding practices, collaboration skills, and most critically, working with folks you have never met (or most likely never will) in person. We encourage you to participate, not just in this community but in many different open-source projects out there. You got this! If you need help, we are here to help you help us. All you need to do is get started. As I mentioned earlier, if you are interested, head over to the contributing docs and jump right in. Cheers & happy coding.

# --description-- <del> So far you have been using type selectors to style elements. A <dfn>class selector</dfn> is defined by a name with a dot directly in front it, like this: </del> <ins> So far you have been using type selectors to style elements. A <dfn>class selector</dfn> is defined by a name with a dot directly in front of it, like this: </ins> ```css .class-name {


Question:
I think that the instructions for the media query are a little difficult for (relative) beginners to understand. Up until now, as far as I can see, they've only been asked to create media queries for CSS rules that they're already somewhat familiar with (, etc.). So, to me, it just feels a little too ambitious at this stage to expect them to have fully grasped the terminology involved (media-rule, values etc.) and to be able to construct the appropriate media query. It doesn't help that the MDN docs page has no examples using either or which also makes it a little more difficult for students to search for help via Google. I feel as though some kind of example would be very useful here, although I do appreciate that it's difficult to provide an example without effectively giving the solution away. Perhaps something like "reminder - the format of a media-query is (media-rule: value)" could be ? (at least to the hint if not to the instructions). Alternatively, perhaps add a link to this which does have an appropriate example. 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] Recent forum posts:
I do agree an example would work, but it isn't the optimal way. It's against freeCodeCamp policy to add an external link, there is an issue with the content of the external link changing. We can change previous media challenge to include this , until media reduce article is written.
Agreed, users are always free to search if they want to, but we should try to make our lessons self-contained if possible. I just tried doing the lesson myself and found it frustrating to keep getting the hint when I had wrapped the rule correctly, but the rule was wrong. should trigger a different hint. That sounds good to me, though I'd word it slightly differently to be more consistent with the rest of the hints: cc:

# --hints-- <del> You should have a `@media (prefers-reduced-motion: no-preference)` rule. </del> <ins> You should have one `@media (prefers-reduced-motion: no-preference)` rule. </ins> ```js <del> assert.exists(new __helpers.CSSHelp(document).getRuleListsWithinMedia('(prefers-reduced-motion: no-preference)')); </del> <ins> assert.equal(new __helpers.CSSHelp(document).getRuleListsWithinMedia('(prefers-reduced-motion: no-preference)').length, 1); </ins> ``` You should wrap the existing `*` rule within the `@media` rule.


Question:
In step 1 of building a cafe menu, the attribute test is strict with space Here is the markdown file The code above should pass, for this to happen you should change to ! 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.
Can I work on this issue ?
Yes، feel free to open a pull request

You should have an opening `<html>` tag with a `lang` attribute of `en`. ```js <del> assert(code.match(/<htmls+lang=('|")en1s*>/i)); </del> <ins> assert(code.match(/<htmls+langs*=s*('|")en1s*>/gi)); </ins> ``` You should have a closing `<html>` tag. Remember that closing tags have a `/` following the opening `<` bracket.


Question:
The challenge text mentions Ryan but there is no Ryan. We should only mention parts of the example that exist, ideally. No response All No response
wow. Ryan was exist? that is interesting.
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.

} ``` <del> This would log `Alan`, `Jeff`, `Sarah`, and `Ryan` - each value on its own line. </del> <ins> This would log `Alan`, `Jeff`, and `Sarah` - each value on its own line. </ins> In this statement, we defined a variable `user`, and as you can see, this variable was reset during each iteration to each of the object's keys as the statement looped through the object, resulting in each user's name being printed to the console.


Question:
There are three tests that test for non-empty labels: "Your #name-label should not be empty." "Your #email-label should not be empty." "Your #number-label should not be empty." I think the word "empty" is slightly ambiguous here. These tests appear to be looking for actual text inside the label. But if the user nests an inside the label without text then the isn't exactly empty: The above will fail because there is no actual text in the but I can see how the user would not think the is empty. N/A Adjust the test descriptions so they clarify that text needs to be inside the . Perhaps something like: "Your #name-label should contain text that describes the input". No response N/A No response
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.

assert(!!el && el.tagName === 'LABEL') ``` <del> Your `#name-label` should not be empty </del> <ins> Your `#name-label` should contain text that describes the input. </ins> ```js const el = document.getElementById('name-label') assert(!!el && el.innerText.length > 0) ``` <del> Your `#email-label` should not be empty </del> <ins> Your `#email-label` should contain text that describes the input. </ins> ```js const el = document.getElementById('email-label') assert(!!el && el.innerText.length > 0) ``` <del> Your `#number-label` should not be empty </del> <ins> Your `#number-label` should contain text that describes the input. </ins> ```js const el = document.getElementById('number-label')


Question:
There are three tests that test for non-empty labels: "Your #name-label should not be empty." "Your #email-label should not be empty." "Your #number-label should not be empty." I think the word "empty" is slightly ambiguous here. These tests appear to be looking for actual text inside the label. But if the user nests an inside the label without text then the isn't exactly empty: The above will fail because there is no actual text in the but I can see how the user would not think the is empty. N/A Adjust the test descriptions so they clarify that text needs to be inside the . Perhaps something like: "Your #name-label should contain text that describes the input". No response N/A No response
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.

assert(!!el && el.tagName === 'LABEL') ``` <del> Your `#name-label` should not be empty. </del> <ins> Your `#name-label` should contain text that describes the input. </ins> ```js const el = document.getElementById('name-label') assert(!!el && el.innerText.length > 0) ``` <del> Your `#email-label` should not be empty. </del> <ins> Your `#email-label` should contain text that describes the input. </ins> ```js const el = document.getElementById('email-label') assert(!!el && el.innerText.length > 0) ``` <del> Your `#number-label` should not be empty. </del> <ins> Your `#number-label` should contain text that describes the input. </ins> ```js const el = document.getElementById('number-label')


Question:
challenge-editor should be to the "How to work on practice projects" documentation here:
I'll tackle this today.

# How to Work on Practice Projects <ins> Our practice projects use a step-based approach to teach concepts to campers. A project will consist of multiple files, which we refer to as **"steps"**. These files are named by the challenge ID, to avoid issues with the translation flow. Unfortunately, this makes it difficult to find the file associated with a specific step. We've built a challenge editor tool that helps remedy this. This tool allows you to navigate the available projects, and the steps for each project (in order). There's also an embedded code editor you can use to work on the files directly. ## Using the Challenge Editor These instructions will tell you how to use our challenge editor tool to work on the practice projects. ### Starting the Editor To start the editor, make sure you are in the root freecodecamp directory. Then, run `npm run challenge-editor` to start both the client and the API that powers the editor. The client will run on port `3300`, so you can access it at `http://localhost:3300`. The API runs on port `3200`, to avoid conflicts with the learn client and server. This will allow you to run the freeCodeCamp application at the same time as the editor, so you can test your changes locally. ### Navigating the Editor The default view will list the available `superblocks` - these are the certifications. Click on the certification link you want to work on. This will take you to the list of blocks. These are the practice projects. Click on the project link you want to work on. This will take you to a list of steps for the project. If you are working on an existing step, you can click on the step link to open the editor. If you are adding or removing steps, click the `Use the step tools` link to switch to the step tools for that challenge. ### Editing Steps When you click on a step, you'll be taken to the editor. This is a basic text editor that offers syntax highlighting. After you have made your changes, click the `Save Changes` button to save your changes. You will get a browser alert letting you know that your changes are ready to commit. Note that you'll need to use `git` manually to stage and commit your files - this tool will not do that for you. ### Step Tools When you click the `Use the step tools` link, you'll be taken to the step tools page. This allows you to add or remove steps from the project. #### Create Next Step Clicking this button will add a new step at the end of the project. This step will use the previous step's code as the seed. #### Create Empty Steps Enter the number of steps you want to add in the input. Then, clicking the button will create that many empty steps at the end of the project. #### Insert Step Enter the step number that you want to add a step _after_. For example, if you want to add a step after `step-12`, enter `12`. Then, click the `Insert Step` button to add the step. The following steps will be re-ordered. #### Delete Step Enter the step number you want to delete. Then click the `Delete Step` button to remove that step. This will automatically update the step numbers for the remaining steps. #### Update Step Titles You should not have to use this tool unless you've manually deleted or added steps. This tool will reorder the step numbers. ## Using the Scripts Manually If you want to work on the steps manually, in your local IDE, you can run the step management scripts directly. </ins> The `tools/challenge-helper-scripts` folder contains tools to help facilitate the creation and maintenance of the freeCodeCamp project-based curriculum. <del> ## Create a new project </del> <ins> ### Create a new project </ins> <del> Run `npm run create-project`. This opens up a command line ui that guides you through the process. Once that has finished, there should be a new challenge in the English curriculum that you can use for the first step of the project. For example, if you created a project called `test-project` in the Responsive Web Design certification, it would be in `curriculum/challenges/english/01-responsive-web-design/test-project`. </del> <ins> Run `npm run create-project` from the root directory. This opens up a command line ui that guides you through the process. Once that has finished, there should be a new challenge in the English curriculum that you can use for the first step of the project. For example, if you created a project called `test-project` in the Responsive Web Design certification, it would be in `curriculum/challenges/english/01-responsive-web-design/test-project`. </ins> If you want to create new steps, the following tools simplify that process. <del> ## create-next-step </del> <ins> ### create-next-step </ins> A one-off script that will automatically add the next step based on the last step in the project. The challenge seed code will use the previous step's challenge seed code. <del> ### How to run script: </del> <ins> #### How to run script: </ins> 1. Change to the directory of the project. 2. Run the following npm command:


Question:
challenge-editor should be to the "How to work on practice projects" documentation here:
I'll tackle this today.

npm run create-next-step ``` <del> ## create-empty-steps </del> <ins> ### create-empty-steps </ins> A one-off script that automatically adds a specified number of steps. The challenge seed code for all steps created will be empty. **Note:** This script also runs [update-step-titles](#update-step-titles). <del> ### How to run script: </del> <ins> #### How to run script: </ins> 1. Change to the directory of the project. 2. Run the following npm command:


Question:
challenge-editor should be to the "How to work on practice projects" documentation here:
I'll tackle this today.

npm run create-empty-steps X # where X is the number of steps to create. ``` <del> ## insert-step </del> <ins> ### insert-step </ins> A one-off script that automatically adds a new step at a specified position, incrementing all subsequent steps (both their titles and in their meta.json). The challenge seed code will use the previous step's challenge seed code with the editable region markers (ERMs) removed. **Note:** This script also runs [update-step-titles](#update-step-titles). <del> ### How to run script: </del> <ins> #### How to run script: </ins> 1. Change to the directory of the project. 2. Run the following npm command:


Question:
challenge-editor should be to the "How to work on practice projects" documentation here:
I'll tackle this today.

npm run insert-step X # where X is the position to insert the new step. ``` <del> ## delete-step </del> <ins> ### delete-step </ins> A one-off script that deletes an existing step, decrementing all subsequent steps (both their titles and in their meta.json) **Note:** This script also runs [update-step-titles](#update-step-titles). <del> ### How to run script </del> <ins> #### How to run script </ins> 1. Change to the directory of the project. 2. Run the following npm command:


Question:
challenge-editor should be to the "How to work on practice projects" documentation here:
I'll tackle this today.

npm run delete-step X # where X is the step number to be deleted. ``` <del> ## update-step-titles </del> <ins> ### update-step-titles </ins> A one-off script that automatically updates the frontmatter in a project's markdown files so that they are consistent with the project's meta.json. It ensures that each step's title (and dashedName) match the meta's challengeOrder. <del> ### How to run script </del> <ins> #### How to run script </ins> 1. Change to the directory of the project. 2. Run the following npm command:


Question:
in step 21 of building a piano project, the hint in line 30 is missing code blocks This should be changed to If you would like to fix this issue, 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 believe I did all this right. This is my first time contributing to open source. Very exciting :))

assert(img?.previousElementSibling === null); ``` <del> Your `img` element should have a `class` set to logo. </del> <ins> Your `img` element should have a `class` set to `logo`. </ins> ```js const img = document.querySelector('img');


Question: There is a typo in Understand BCrypt Hashes, is used instead of . Here is the typo If you would like to fix this issue, please make sure you read , we prioritize contributors following the instructions in our guides. Join us in 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.

Add all your code for these lessons in the `server.js` file between the code we have started you off with. Do not change or delete the code we have added for you. <del> BCrypt has already been added as a dependency, so require it ad `bcrypt` in your server. </del> <ins> BCrypt has already been added as a dependency, so require it as `bcrypt` in your server. </ins> Submit your page when you think you've got it right.


Question:
It says that plot 1 should have an x label of Month, but it's the second plot that is monthly. It should say that plot 2 should have that xlabel. It should say that plot 2 should have an xlabel of Years It's testing correctly, so it should be an issue only with the assert message ! 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
same thing for the ylabel in plot 2 actually, it says plot 1 there too
Hello, It seems that same thing is for the "testboxplot_titles".
I am opening this for contribution. The PR has to be done on the boilerplate:

h4.negative-10.text-nowrap Community Builder img.profile-image(src='https://s3.amazonaws.com/freecodecamp/branden-byers.jpg' alt="Branden Byers picture") h4.text-nowrap Madison, Wisconsin <del> p.negative-10 "I'm a massage therapist and Stay-at-home-dad. I learned Hypercard, then Rails, but now I feel at home with JavaScript." </del> <ins> p.negative-10 "Cookbook author and stay-at-home-dad. Started coding as a kid, got distracted, but now I'm back in full JavaScript force!" </ins> .col-xs-12.col-sm-4.col-md-3.team-member h3.negative-10.text-nowrap Michael Johnson h4.negative-10.text-nowrap Nonprofit Coordinator


Question:
It says that plot 1 should have an x label of Month, but it's the second plot that is monthly. It should say that plot 2 should have that xlabel. It should say that plot 2 should have an xlabel of Years It's testing correctly, so it should be an issue only with the assert message ! 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
same thing for the ylabel in plot 2 actually, it says plot 1 there too
Hello, It seems that same thing is for the "testboxplot_titles".
I am opening this for contribution. The PR has to be done on the boilerplate:

h4.negative-10.text-nowrap Live Content Manager img.profile-image(src='https://s3.amazonaws.com/freecodecamp/jason-rueckert.jpg' alt="Jason Rueckert's picture") h4.text-nowrap Seattle, Washington <del> p.negative-10 "My high school job was testing basketball shoes for Nike. I learned code to work smarter, not harder. I have no thyroid." </del>  No newline at end of file <ins> p.negative-10 "My high school job was testing basketball shoes for Nike. I learned code to work smarter, not harder. I have no thyroid." </ins>


Question:
it should be --important <-- instead of import Learn Bash Scripting by Building Five Programs False. An important operator in that menu is =~. It allows for pattern matching. Using the same syntax but with this operator, check if hello contains the pattern el. ! 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
I'll fix this! Just for reference, I will be fixing this issue in repository.
Hey guys! I'm getting this error when typing in the terminal. Anyone know how to fix? I created a seperate branch that is up to date.
For generating file, the coderoad cli requires for the version branch to exist locally. Detailed guidelines how to contribute to these tutorials can be found on Please refer to the parts about making changes on the branch. Thank you and happy coding!
Perfect. I have the typo fixed and ill make that branch work with coderoad. Thank you for your patience

} ]); <ins> profileValidation.controller('nonprofitFormController', ['$scope', function($scope) { } ]); </ins> profileValidation.directive('uniqueUsername', function($http) { return { restrict: 'A',


Question:
it should be --important <-- instead of import Learn Bash Scripting by Building Five Programs False. An important operator in that menu is =~. It allows for pattern matching. Using the same syntax but with this operator, check if hello contains the pattern el. ! 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
I'll fix this! Just for reference, I will be fixing this issue in repository.
Hey guys! I'm getting this error when typing in the terminal. Anyone know how to fix? I created a seperate branch that is up to date.
For generating file, the coderoad cli requires for the version branch to exist locally. Detailed guidelines how to contribute to these tutorials can be found on Please refer to the parts about making changes on the branch. Thank you and happy coding!
Perfect. I have the typo fixed and ill make that branch work with coderoad. Thank you for your patience

li &#8226 Understand that they will build your project using JavaScript frameworks (as opposed to older or proprietary tools) li &#8226 Keep your expectations high. Our students' goal is to produce work that's up to your standards h3 If you're OK with these terms, great! We'd love to help you! Fill in this form and we'll get right back to you. <del> form.form-horizontal(role='form', action="/nonprofits/", method='POST') </del> <ins> form.form-horizontal(role='form', action="/nonprofits/", method='POST', novalidate='novalidate', name='nonprofitForm') </ins> input(type='hidden', name='_csrf', value=_csrf) .form-group <del> label(class='col-sm-2 control-label', for='name') Your name </del> <ins> label(class='col-sm-2 control-label', for='name') Your name * </ins> .col-sm-8 <del> input.form-control(type='text', name='name', id='name') </del> <ins> input.form-control(type='text', name='name', id='name', autocomplete="off", ng-model='name', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.name.$invalid && nonprofitForm.name.$error.required && !nonprofitForm.name.$pristine") alert(type='danger') span.ion-close-circled(id='#name-error') |  Your name is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='email') Your email </del> <ins> label(class='col-sm-2 control-label', for='email') Your email * </ins> .col-sm-8 <del> input.form-control(type='text', name='email', id='email') </del> <ins> input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.email.$invalid && nonprofitForm.email.$error.required && !nonprofitForm.email.$pristine") alert(type='danger') span.ion-close-circled(id='#email-error'). Your email is required. </ins> .form-group <del> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. </del> <ins> label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. * </ins> .col-sm-8 <del> textarea.form-control(type='text', name='message', id='message', rows='7') </del> <ins> textarea.form-control(type='text', name='message', id='message', rows='7', autocomplete="off", ng-model='message', required='required') .col-sm-8.col-sm-offset-2(ng-show="nonprofitForm.message.$invalid && nonprofitForm.message.$error.required && !nonprofitForm.message.$pristine") alert(type='danger') span.ion-close-circled(id='#message-error') | Your message is required. </ins> .form-group .col-sm-offset-2.col-sm-8 <del> button.btn.btn-primary(type='submit') </del> <ins> button.btn.btn-primary(type='submit', ng-disabled='nonprofitForm.$invalid') </ins> span.ion-paper-airplane <del> | Submit </del> <ins> | Submit </ins>  No newline at end of file


Question:
In this line, there is a missing code block around word false It should be like this here is the file: If you would like to fix this issue, 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. Happy contribution.
I opened pull request

**Examples** <del> `3 == '3'` returns `true` because JavaScript performs type conversion from string to number. `3 === '3'` returns false because the types are different and type conversion is not performed. </del> <ins> `3 == '3'` returns `true` because JavaScript performs type conversion from string to number. `3 === '3'` returns `false` because the types are different and type conversion is not performed. </ins> **Note:** In JavaScript, you can determine the type of a variable or a value with the `typeof` operator, as follows:


Question:
A camper mentioned in his comment, that this icon below indicate to them that it's an external link not a popup. ! We can change it to clearer icon that show, that it's a popup. The original comment for context:
I found it interesting, that say you should use ellipsis (…) when there is some additional action required after the action (popup, dialog, confirmation) and it isn't clear by the action itself. This doesn't mean you should use an ellipsis whenever an action displays another window only when additional information is required to perform the action. Consequently, any command button whose implicit verb is to "show another window" doesn't take an ellipsis, such as with the commands About, Advanced, Help (or any other command linking to a Help topic), Options, Properties, or Settings. So maybe an ellipsis of some kind: in button's label or in the icon? More so, it's a part of too. If we were to stick with keeping an icon regardless, this regular feels like a better choice, with the arrow denoting there would be some kind of external interface but the enclosed square representing that it is not an external redirection, thus denoting some kind of popup or modal.
I think these guides are saying that the ellipses should be when the button opens a window that requires the user to enter more information or perform another action. This isn't the case here, so I don't think they are warranted in this instance. If we want to use a new icon then I would suggest we use one that has . I'm not suggesting that we use this exact icon. This is just an example of what I'm suggesting.
I second the use of some kind of variation of that icon. There's a small issue though, there's no such icon in the font awesome library for this so we'll have to find a different way to implement this.
Font awesome has an icon that could have the same meaning: Alternatively Material Icons has a specific preview icon if these can be used?
can you assign me this task?
issues with label, aren't open for contribution yet. You can however browse the label help wanted for open issues
allright sir
Both and both are plausible.
I'd suggest we should move forward to replace the icon with the icon. Should I move ahead and send over a PR? This is the output - !
Sure. Just make sure we don't need to add other dependencies to get that icon.

import React from 'react'; <del> import { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons'; </del> <ins> import { faWindowRestore } from '@fortawesome/free-solid-svg-icons'; </ins> import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useTranslation } from 'react-i18next'; import EditorTabs from './editor-tabs';


Question:
A camper mentioned in his comment, that this icon below indicate to them that it's an external link not a popup. ! We can change it to clearer icon that show, that it's a popup. The original comment for context:
I found it interesting, that say you should use ellipsis (…) when there is some additional action required after the action (popup, dialog, confirmation) and it isn't clear by the action itself. This doesn't mean you should use an ellipsis whenever an action displays another window only when additional information is required to perform the action. Consequently, any command button whose implicit verb is to "show another window" doesn't take an ellipsis, such as with the commands About, Advanced, Help (or any other command linking to a Help topic), Options, Properties, or Settings. So maybe an ellipsis of some kind: in button's label or in the icon? More so, it's a part of too. If we were to stick with keeping an icon regardless, this regular feels like a better choice, with the arrow denoting there would be some kind of external interface but the enclosed square representing that it is not an external redirection, thus denoting some kind of popup or modal.
I think these guides are saying that the ellipses should be when the button opens a window that requires the user to enter more information or perform another action. This isn't the case here, so I don't think they are warranted in this instance. If we want to use a new icon then I would suggest we use one that has . I'm not suggesting that we use this exact icon. This is just an example of what I'm suggesting.
I second the use of some kind of variation of that icon. There's a small issue though, there's no such icon in the font awesome library for this so we'll have to find a different way to implement this.
Font awesome has an icon that could have the same meaning: Alternatively Material Icons has a specific preview icon if these can be used?
can you assign me this task?
issues with label, aren't open for contribution yet. You can however browse the label help wanted for open issues
allright sir
Both and both are plausible.
I'd suggest we should move forward to replace the icon with the icon. Should I move ahead and send over a PR? This is the output - !
Sure. Just make sure we don't need to add other dependencies to get that icon.

onClick={() => togglePane('showPreviewPortal')} > {getPreviewBtnsSrText().portal}  <FontAwesomeIcon icon={faExternalLinkAlt} />   <FontAwesomeIcon icon={faWindowRestore} />  </button>


Question:
The declaration of arr doesn’t need to be guarded by ‘Do Not Change’ comments. There exist many solutions (3 in the guide) that do not need that variable declaration. These comments should be removed or at least moved. All No response
. I lean towards the second option of having only the comments within the function and no extra starter code.
I was thinking something simplier We've ditched a lot of these comments in the rest of the intermediate algorithm challenges. Does the comment help us at all here?
Probably not. I honestly would not even put the . At this point in the curriculum, users should know the function needs to have a statement and they can craft their own.
Sure, then the fix would be: This looks like a good first-timer issue.
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: 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.

```js function whatIsInAName(collection, source) { <del> const arr = []; // Only change code below this line // Only change code above this line return arr; </del> } whatIsInAName([{ first: "Romeo", last: "Montague" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }], { last: "Capulet" });


Question:
In step 31 of the Learn HTML Forms by Building a Registration Form project, the step doesn't explicitly say that it wants the input element to be nested inside the label element. Instead it says: "Add a label with the text Upload a profile picture: , and add an input accepting a file upload." This could be interpreted to mean that the input element should be on the right side of the label element. Only when we attempt this are we told by the Hint "You should nest an input element inside the label element." To clarify the requirement, the step should use the word nest in the exercise as below for eg.: "Add a label with the text Upload a profile picture: , and nest an input accepting a file upload within it.", The step should explicitly state that the input element should be nested within the new label element. No response Not Applicable No response
I think if all of the challenges will have specifications defined explicitly, it will serve no purpose of "challenging" the learners to really think and solve it. In the first place, the solution is already implied from the given code and then, if the learners will still have the hard time solving it, then the feature will definitely do its job.
Agreed. The instructions should be clear to begin with. Making the users guess what the test requires isn't a "challenge", it's just rude.
For what it is worth, the camper has nested an input in a label element a few times in this challenge prior to this step. I am not against adding this reminder to the instructions, but I don't want to lose sight of our goal to keep the instructions more lean and have the hints serve as the reminders.
Definitely. But I looked back at the instructions on the steps where they add the previous inputs and we do explicitly tell them to put the input within the label: step 17: Nest an input element within each label. step 25: within each of the first two label elements, add one input element with type="radio". If we can add that information to those instructions then I think we can add it to this one. And let me just clarify that what I am really concerned about is this correct solution being rejected: I'm working under the assumption that correct code should always pass. So we need to tell the user that only a nested input will pass if that's all the test will accept.
I understand that if someone is working on a series of steps they may not need to be told to nest the input again. However, if they stop and return to the project a few weeks later on, they may not remember that. The hint will remind them sure. I guess this is a minor issue given the hint is quite clear. Personally I like a more explicit instruction.

Moving on to the final `fieldset`. What if you wanted to allow a user to upload a profile picture? <del> Well, the `input` type `file` allows just that. Add a `label` with the text `Upload a profile picture: `, and add an `input` accepting a file upload. </del> <ins> Well, the `input` type `file` allows just that. Add a `label` with the text `Upload a profile picture: `, and nest an `input` accepting a file upload. </ins> # --hints--


Question: in step 53, the span elements are missing code elements. Here is the file We can add elements, to both of them. Like step 43: Or delete the first one and add code elements to the second one, but reading previous issues, I think campers may delete both elements wrapping the text and create one that wraps both the text. Note: that sentence is hard to work with in Arabic, and require adding nuances, because the structure of two code elements following each other which is weird in RTL layout.

# --description-- <del> After your last `.divider`, create a new `p` element with the text `Cholesterol 0mg 0%`. Wrap the text `Cholesterol` in a `span` element, and give that `span` element the `class` attribute set to `bold`. Wrap the text `0%` in another `span` element, with the `class` set to `bold`. Finally, nest the `Cholesterol` and `0mg` span elements inside an additional span element for alignment. </del> <ins> After your last `.divider`, create a new `p` element with the text `Cholesterol 0mg 0%`. Wrap the text `Cholesterol` in a `span` element, and give that `span` element the `class` attribute set to `bold`. Wrap the text `0%` in another `span` element, with the `class` set to `bold`. Finally, nest the `Cholesterol` and `0mg` `span` elements inside an additional `span` element for alignment. </ins> # --hints--


Question:
The following sentence in the Word Blanks lesson should have a code block (three backticks) surrounding the code section which is directly referring to the completed code block below it on the page. Instead of: Consider this sentence - It was really , and we ourselves . It should say: Consider this sentence - The sentence has been translated because of the missing code blocks (and will not make sense as it's a direct reference to the actual code shown below it) The sentence with the blanks should be in a code block that does not wrap. (three backticks above and below it) Instead of: Consider this sentence - It was really , and we  ourselves . It becomes: Consider this sentence - No response n/a No response
Question for those in the know. Do we have a way to keep content from being translated that doesn't involve using the triple back tick code block? I would be cool to use sr-only text "Blank" (or something similar) for those underlines to represent missing text. But we can't do that using the code blocks since they are wrapped in a .
Do they get wrapped in a if they're inline code?
It looks like they are just wrapped in strong tags in crowdin at least. I don't see a pre tag.
pre sounds like a plausible idea. We should go ahead with that.
The challenge require the sentence to not be translated, and element don't stop translation, it gives the choice to the translation to translate or not, which isn't ideal. Here is the file, to solve this issue, change the structure of the sentence to md It was really , and we ourselves . ` If you would like to fix this issue, please make sure you read , we prioritize contributors following the instructions in our guides. Join us in or if you need help contributing, our prolific contributors will guide you through this.
nope, but we can open an issue for this yes
Can you assign me this issue
Only issues with the or 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. 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

You are provided sentences with some missing words, like nouns, verbs, adjectives and adverbs. You then fill in the missing pieces with words of your choice in a way that the completed sentence makes sense. <del> Consider this sentence - It was really **____**, and we **____** ourselves **____**. This sentence has three missing pieces- an adjective, a verb and an adverb, and we can add words of our choice to complete it. We can then assign the completed sentence to a variable as follows: </del> <ins> Consider this sentence: ```md It was really ____, and we ____ ourselves ____. ``` This sentence has three missing pieces- an adjective, a verb and an adverb, and we can add words of our choice to complete it. We can then assign the completed sentence to a variable as follows: </ins> ```js const sentence = "It was really " + "hot" + ", and we " + "laughed" + " ourselves " + "silly" + ".";


Question: instead of the example command should be: docshow-to-add-cypress- project dependencies to run will see error: instead of the example command should be: No response

For example: ```console <del> pnpm run cypress -- run --spec=cypress/e2e/default/landing.js </del> <ins> pnpm run cypress -- run --spec=cypress/e2e/default/landing.ts </ins> ``` - To create a development build, start the development server, and run all existing cypress end-to-end tests:


Question:
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.

-   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.


Question: In the new JS curriculum I found a couple of example where comments have been inside code blocks in the challenge description. These comments are not translatable on Crowdin: We should avoid commenting code blocks or make those comments accessible from Crowdin

```js switch (expression) { case 1: <del> /* this code will execute if the case matches the expression */ </del> <ins> console.log("1"); </ins> break; default: <del> /* the default will execute if none of the other cases match the expression */ </del> <ins> console.log("Not 1"); </ins> } ``` <ins> In this example, the first `case` checks if `expression === 1`, and if so logs `1` to the console. If no cases are true, it will log `Not 1` to the console. The `break` statement stops execution of the `switch` when the `case` is true. </ins> Add a `switch` statement and use `e.target.value` for the expression. # --hints--


Question: In the new JS curriculum I found a couple of example where comments have been inside code blocks in the challenge description. These comments are not translatable on Crowdin: We should avoid commenting code blocks or make those comments accessible from Crowdin

```js case "example": <del> // code goes here </del> <ins> console.log("example"); </ins> break; ```


Question:
The setup instructions here suggest that I need MongoDB Community Server | 4.2.x. I've tried through docker and through macos homebrew instructions and can't get any 4.2 version. 4.4.x is available. Is that acceptable? If so, should I update this doc? Try to follow one of options for setting up MongoDB Community Server | 4.2.x Maybe 4.4.x is ok? No response
i searched the tags on docker and no 4.2 is available. this article suggests other ways but the result is always
i found this pr which suggests that 4.4 should work fine. so i guess i should update the docs? you agree?
or there are other docker images available of 4.2.x. But people trying to follow directions won't get to them if we point them to starting from here: because mongo only points to their docker images.
i also see that in there are docker instructions there. should i use that or is that for something different?
Hi thanks for the issue. We recommend asking around in our chat and forum when you are troubleshooting. The docs need to be updated to the version we are using right now. I have created a PR. It will be available soon at I hope this helps.
I see that the docs have been updated to mongo 5.0. But maybe should the docs point to as the best way to set up mongo? That's what I used and it seems like the easiest option.
Thanks for pointing that out. The directory is a newer API in the works. It will have a full docker-based setup that is more convenient than the current workflow. We will release cleaner and easy-to-follow docs when that happens. Meanwhile we will stick to the docs you see at:

| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------- | | [Node.js](http://nodejs.org)                                                                  | `18.x`  | We use the "Active LTS" version, See [LTS Schedule](https://nodejs.org/en/about/releases/). | | [pnpm](https://pnpm.io/installation)                                                          | `8.x`   | -                                                                                | <del> | [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `4.2.x` | -                                                                                | </del> <ins> | [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `5.0.x` | -                                                                                | </ins> > [!ATTENTION] > If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details.