-
Notifications
You must be signed in to change notification settings - Fork 0
Pr63692 main #1
base: pr63692-bug
Are you sure you want to change the base?
Pr63692 main #1
Conversation
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
…or regex (#63702)
…a-heart (#63692) Co-authored-by: Huyen Nguyen <25715018+huyenltnguyen@users.noreply.github.com>
WalkthroughRefactors challenge data by moving tests from challenge.fields to top-level and removing fields.blockName usage across queries, types, and components. Activates A2 English certification (updates config, flags, labels, tests). Adds i18n-aware HTML serialization for Chinese ruby annotations in the challenge parser with new fixtures/tests. Broad i18n content renames to Legacy V7/V8, speaking-modal strings, and minor curriculum text and CSS tweaks. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor Author
participant Parser as Challenge Parser Plugins
participant I18N as i18n-stringify (createMdastToHtml)
participant MD as MD AST
participant HTML as HTML Output
Author->>Parser: Provide MD AST and file.lang (e.g., zh-CN)
Parser->>I18N: createMdastToHtml(file.lang)
I18N-->>Parser: toHtml(nodes)
Parser->>MD: Extract sections (text, questions, answers, distractors)
loop Render sections
Parser->>I18N: toHtml(sectionNodes)
alt lang = zh-CN and inlineCode matches "hanzi (pinyin)"
I18N->>HTML: Render ruby/rp/rt structure
else
I18N->>HTML: Render standard HTML (e.g., code)
end
end
Parser->>Author: file.data.{text, quizzes, assignments, videoQuestion} with HTML
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (1 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 18
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (7)
curriculum/challenges/english/blocks/lecture-user-centered-design/672bafe4ef812b78696b0e27.md (1)
14-59: Fix minor grammar issue in desaturated-colors sentenceLine 58 is missing a verb before “more comfortable”:
“Desaturated colors are colors that are less intense, have a lower saturation level, and more comfortable to look at in dark mode.”
Consider:
-Desaturated colors are colors that are less intense, have a lower saturation level, and more comfortable to look at in dark mode. +Desaturated colors are colors that are less intense, have a lower saturation level, and are more comfortable to look at in dark mode.The interactive-editor instructions around this paragraph read well and match the rest of the curriculum.
client/i18n/locales/portuguese/translations.json (1)
682-693: Localizeblock-type.cert-projectfor this Portuguese localeAll other
block-typevalues here are in Portuguese, butcert-projectis English. To keep the UX consistent with the rest of this file (and reuse existing wording frommisc.certification-project), consider:"review": "Revisão", "quiz": "Questionário", - "cert-project": "Certification Project", + "cert-project": "Projeto de certificação", "exam": "Teste",client/i18n/locales/chinese/translations.json (1)
682-693: Aligncert-projectlabel with existing Chinese translation
learn.block-type.cert-projectis currently in English, while the rest of this block andmisc.certification-projectuse Chinese. For consistency, you can reuse the existing translation:- "cert-project": "Certification Project", + "cert-project": "认证项目",client/i18n/locales/ukrainian/translations.json (1)
682-693: Localizecert-projectto match existing Ukrainian wording
learn.block-type.cert-projectis in English, butmisc.certification-projectalready has the Ukrainian phrase. For consistency with the rest of the UI:- "cert-project": "Certification Project", + "cert-project": "Сертифікаційний проєкт",client/i18n/locales/korean/intro.json (1)
8758-8768: Mislabelled A1 Chinese practice block shares quiz title
zh-a1-practice-building-your-self-introductioncurrently has the same title as the quiz block, which is confusing:
- Practice block title: “Greetings and Introductions Quiz”
- Quiz block title: “Greetings and Introductions Quiz”
The practice block should have a distinct, descriptive title. For example:
- "zh-a1-practice-building-your-self-introduction": { - "title": "Greetings and Introductions Quiz", + "zh-a1-practice-building-your-self-introduction": { + "title": "Building Your Self Introduction", "intro": ["", ""] },This keeps the quiz label unique and better reflects the practice activity.
client/i18n/locales/japanese/intro.json (2)
7486-7631: Placeholder and empty intros in A1 Professional Spanish should be filled or hiddenSeveral pieces of user‑facing text in
a1-professional-spanishare still placeholders or empty:
- Superblock
intro:"intro": ["Placeholder intro"]- Module intros under
es-a1-module-*-...:"intro": ["PLACEHOLDER: Write the module intro here."]- Many blocks (e.g.
es-a1-learn-vowels,es-a1-learn-consonants-and-special-characters,es-a1-review-the-alphabet,es-a1-practice-the-alphabet,es-a1-quiz-the-alphabet) haveintro:["", ""].These will either show visibly as “PLACEHOLDER…” or as blank sections in the UI, which is a minor UX issue.
Consider either:
- Providing temporary real English/Japanese copy, or
- Omitting the
introkey / gating these blocks from navigation until content is ready.If you’d like, I can help draft neutral, non‑placeholder intros based on the chapter and block titles.
8621-8624: Responsive Web Design exam intro has duplicated “Exam”The
exam-responsive-web-design-certificationintro currently reads “Responsive Web Design Certification Exam” twice (“earn your … Certification Exam”). To match the other exam intros (JavaScript, Python, etc.), dropping the trailing “Exam” is clearer.- "Pass this exam to earn your Responsive Web Design Certification Exam" + "Pass this exam to earn your Responsive Web Design Certification."
♻️ Duplicate comments (2)
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02009ffc0797ca567ab.md (1)
10-10: Consistent interactive-editor noteThis NOTE mirrors the wording used in the related user-centered-design lesson and clearly explains the need to enable the interactive editor to see previews. Any optional wording polish discussed in the other file applies here as well.
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb015cfc889794359c4e0.md (1)
10-10: Aligned modal-dialog NOTE with other lessonsThe interactive-editor NOTE is consistent with the other user-centered-design lessons and clearly explains how to see the previews. Any optional wording tweak around “all of the code” from the earlier file would apply here too but is non-blocking.
🧹 Nitpick comments (50)
curriculum/challenges/english/blocks/lecture-working-with-specialized-semantic-elements/672995ffdfd2f337f5f215f8.md (1)
12-12: Clarifying note about previews looks good; style tweak is optionalThe added parenthetical about enabling the interactive editor is clear and consistent across all three examples. If you want slightly tighter copy, you could consider making it a separate sentence instead of in parentheses, e.g., “Here is an example … . To see the previews, enable the interactive editor.” — but the current wording is acceptable as-is.
Also applies to: 24-24, 42-42
curriculum/challenges/english/blocks/lab-factorial-calculator/66c07238b01053abaf812065.md (1)
77-77: Regex relaxation is fine; optional consistency tweak onlyAllowing
\s*after the optional semicolon is safe and just makes the test more tolerant of trailing whitespace. If you care about consistency, you could mirror this in theconsole.log(resultMsg)hint regex (Line 105), but that’s purely optional.curriculum/challenges/english/blocks/lecture-accessible-media-elements/672a55fbc2d95a9453151caf.md (2)
31-31: Clearer sequencing for enabling the editor (optional)The added sentence is helpful. For slightly clearer instructions, consider leading with enabling the editor, e.g., “First enable the interactive editor. Then click anywhere in the whitespace…”.
85-85: Align wording with earlier instructions (optional)Content is correct. For consistency with Line 31 and to avoid any ambiguity about order of actions, you could mirror a “First enable the interactive editor, then…” structure here as well.
curriculum/challenges/english/blocks/lecture-understanding-form-validation/6733d3a33abdd27cd562bdf2.md (2)
56-56: Tighten wording to avoid repeated “Maybe”Consider rephrasing to reduce repetition, e.g., “Perhaps we don’t want that. Instead, we’d like to show the character the user types in a separate element.”
258-258: AlignpreventDefaultnaming with code usageElsewhere you show
preventDefault()with parentheses; here you refer to thee.preventDefaultmethod. For consistency and clarity, consider writinge.preventDefault().curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md (1)
149-155: Hyphenate “human readable” for better grammarMinor copy edit: change “a human readable description” to “a human‑readable description”.
e2e/preview.spec.ts (1)
29-43: Strengthen the changed-code assertion (and consider brand casing)Right now the second check only asserts that a
headingwith nameFreeCodeCampis visible after typing, but it does not explicitly prove that the edit changed the preview. If you want this test to be more future-proof, consider:
- Asserting that
FreeCodeCampis not visible beforeinsertText, then is visible afterward; and/or- Clearing or replacing the editor content instead of just inserting, so the heading is guaranteed to come from the new code.
Also, if the project generally uses the brand as
freeCodeCamp, you might want to align the<h1>text and assertion with that spelling to avoid future nitpicks in content reviews.curriculum/challenges/english/blocks/lecture-user-centered-design/672baffc684be178dd02fa06.md (1)
10-10: NOTE copy is clear; optional wording tighteningThe guidance about enabling the interactive editor is clear and consistent. If you want to tighten the prose slightly, you could drop “of” and make the preview phrase a bit more idiomatic:
-**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all of the code. The goal of the examples is to show you previews for these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor. +**NOTE**: Some of the interactive examples might use CSS that you haven't learned yet. Don't worry about trying to understand all the code. The goal of the examples is to show you previews of these design concepts so you better understand how things work. To see the previews, you will need to enable the interactive editor.As per static analysis hints, this is optional.
curriculum/challenges/english/blocks/lecture-user-centered-design/672baff13bc5b3789691c75c.md (1)
10-10: NOTE text matches the new interactive-editor patternThe NOTE clearly explains the purpose of the examples and how to enable previews via the interactive editor. If you want to align wording with a slightly more concise style, you could also use “all the code” instead of “all of the code,” but that’s purely optional.
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb03999f39379f67d8972.md (1)
10-10: Note text looks good; consider minor wording tweakThe added guidance about enabling the interactive editor is clear and fits the global pattern. For slightly tighter prose, you could drop “of” in “all of the code”:
-Don't worry about trying to understand all of the code. +Don't worry about trying to understand all the code.Based on static analysis hints, this makes the sentence more concise.
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb009952c7a7904a750cb.md (1)
10-10: Note text is clear; optional minor wording tweakThe added sentence about enabling the interactive editor correctly explains how to see the previews. Optionally, you could tighten the earlier phrase to “trying to understand all the code” (dropping “of”) for slightly smoother reading, but it’s not required.
curriculum/challenges/english/blocks/lecture-understanding-html-attributes/6708143cab2b583ecd3324f5.md (1)
62-62: Fix minor grammar in the checkbox instruction“try remove the
checkedattribute” should be “try removing thecheckedattribute” for correct grammar.-Enable the interactive editor and try remove the `checked` attribute from the `input`. You will see that the checkbox is no longer checked by default. +Enable the interactive editor and try removing the `checked` attribute from the `input`. You will see that the checkbox is no longer checked by default.curriculum/challenges/english/blocks/lecture-html-fundamentals/670803abcb3e980233da4768.md (1)
12-31: Optional wording tweak for “inside of the … element”The instructions are clear as-is. For slightly tighter style, you could drop “of” in both places:
-Here is an example of a `div` element. Add another paragraph element inside of the `div` element and see the changes in the preview window. To see the previews, you will need to enable the interactive editor. +Here is an example of a `div` element. Add another paragraph element inside the `div` element and see the changes in the preview window. To see the previews, you will need to enable the interactive editor. @@ -Add another `section` element below the first one. Then inside of the `section` element, a `h2` and `p` elements. You can use whatever text you like and you will see the changes in the preview window. To interact with the example, you will need to enable the interactive editor. +Add another `section` element below the first one. Then inside the `section` element, add `h2` and `p` elements. You can use whatever text you like and you will see the changes in the preview window. To interact with the example, you will need to enable the interactive editor.(Based on static-analysis hints.)
curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672990ecf71a852804ababe7.md (1)
80-80: Optional style tweak: “inside thenav”The instruction is clear. For slightly smoother phrasing you could drop “of”:
-Enable the interactive editor and add a `<a href="#">Products</a>` inside of the `nav` and see the changes in the preview window. +Enable the interactive editor and add a `<a href="#">Products</a>` inside the `nav` and see the changes in the preview window.(Based on static-analysis style hint.)
curriculum/challenges/english/blocks/lecture-working-with-audio-and-video-elements/67168278ac6df6a799555db5.md (1)
41-41: Minor grammar tweak: “close to the end of the song”Consider inserting “to” for smoother reading.
-Here's an example of using the `loop` attribute to play one of Quincy Larson's songs titled "Can't stay down". To see the looping in action, enable the interactive editor, scrub the play head close the end of the song and it will restart again once it is finished. +Here's an example of using the `loop` attribute to play one of Quincy Larson's songs titled "Can't stay down". To see the looping in action, enable the interactive editor, scrub the play head close to the end of the song and it will restart again once it is finished.client/src/components/formHelpers/form-fields.tsx (1)
98-99: Remove unnecessary casts and ensure a stable string value for the control
Field<string | undefined>combined with repeatedvalue as stringcasts is a small type/ergonomics smell and risks passingundefinedthrough to a controlled input. You can rely on the union type directly and only coerce for the control:- <Field<string | undefined> key={`${name}-field`} name={name}> + <Field<string | undefined> key={`${name}-field`} name={name}> {({ input: { value, onChange }, meta: { pristine, error } }) => { @@ - type={types[name] || 'text'} - value={value as string} + type={types[name] || 'text'} + value={value || ''} @@ - {nullOrWarning( - value as string, + {nullOrWarning( + value, !pristine && error, isURL, name )}This keeps the input consistently controlled (always a string) and aligns
nullOrWarning’s parameter type with the actual value type, without the extraneous assertions.Also applies to: 118-119, 124-128
e2e/cert-username-case-navigation.spec.ts (1)
17-19: Updated count to 20 matches new certification but keeps the test brittleBumping the expected
View … Certificationlink count to 20 is consistent with adding another cert (e.g. A2 English). Consider, longer term, asserting on the presence of specific certification titles or a minimum count instead of an exact total to reduce maintenance when certs are added/removed.Also applies to: 48-51
api/src/routes/protected/certificate.test.ts (1)
36-56: A2 English flag is wired consistently into certificate verification testsInitializing
isA2EnglishCertin the test setup, including it inisCertMapexpectations and marking ittruein the “all current certifications are met” scenario keeps the tests aligned with the new cert type andcurrentCertificationssemantics. To reduce future churn when adding more current certs, consider deriving this “all met” user state fromcurrentCertifications(and their mapped flags) instead of hard‑coding the full set of boolean fields here.Also applies to: 132-157, 221-245
shared/config/certification-settings.ts (1)
35-38: Promotion of A2 English to a current certification looks coherentAdding
Certification.A2Englishto the enum, including it incurrentCertificationsand wiring it intocertSlugTypeMapkeeps the config consistent with the new live cert and the existingcertTypes.a2Englishplumbing. You might want to adjust the nearby// Upcoming certificationscomment or placement ofA2Englishin the enum to avoid implying it is still upcoming.Also applies to: 56-59, 185-213
client/src/components/profile/components/time-line.tsx (1)
249-307: Timeline now correctly usesblockinstead ofblockNameUsing
blockin the query and inblockNameTitle(intro:${superBlock}.blocks.${block}.title) is consistent with the new data shape and with other templates. The A2 English special-case still works with the updated key.If you want to tighten types later, you could declare
const idToNameMap = new Map<string, NameMap>();to remove some of the@ts-expect-errornoise here.tools/challenge-parser/parser/plugins/utils/mdast-to-html.js (1)
5-15: Consider propagatingallowDangerousHtmlconsistently tohastToHTMLThe new
hastOptionsparameter lets callers overrideallowDangerousHtmlformdastToHast, buthastToHTMLis still hard‑coded with{ allowDangerousHtml: true }. If the intent is to be able to turn this off end‑to‑end, consider deriving a singleallowDangerousHtmlvalue and using it in both calls:-function mdastToHTML(nodes, hastOptions = {}) { +function mdastToHTML(nodes, hastOptions = {}) { if (!Array.isArray(nodes)) throw Error('mdastToHTML expects an array argument'); - // - the 'nodes' are children, so first need embedding in a parent - - return hastToHTML( - mdastToHast(root(nodes), { allowDangerousHtml: true, ...hastOptions }), - { - allowDangerousHtml: true - } - ); + const allowDangerousHtml = + Object.prototype.hasOwnProperty.call(hastOptions, 'allowDangerousHtml') ? + hastOptions.allowDangerousHtml : + true; + + return hastToHTML( + mdastToHast(root(nodes), { ...hastOptions, allowDangerousHtml }), + { allowDangerousHtml } + ); }This keeps current behavior by default while honoring any explicit override.
tools/challenge-parser/parser/plugins/add-text.test.js (1)
165-177: Solid coverage for zh‑CN ruby rendering inadd-textThe new zh‑CN test exercises both
instructionsandexplanationsections and asserts the full ruby markup, which should quickly catch regressions in the i18n HTML serializer. If you want to de‑duplicate strings slightly, you could reuse theinstructionsIdconstant, but that’s purely cosmetic.tools/daily-challenges/types.ts (1)
18-25:Challenge.testsflattening matches helpers and Redux typesExposing
testsdirectly onChallengeas{ testString; text }[]lines up with the updated GraphQL selection inhelpers.tsand the sharedTesttype. While you’re here, note thatchallengeFilesusesfilekey(lowercasek); if that’s not intentional and other types/queries usefileKey, consider harmonizing the name in a follow‑up to avoid confusion.tools/challenge-parser/parser/__fixtures__/with-chinese-quizzes.md (1)
1-69: Fixture structure matches parser expectations; MD024 warning is benignThe quiz fixture’s marker layout (
--quizzes--,--quiz--, repeated--question--blocks, etc.) is appropriate for exercising the quizzes parser and the new zh‑CN behavior. The markdownlint MD024 “duplicate heading” warnings are expected here and can be safely ignored or suppressed for fixtures rather than changing the test data.tools/challenge-parser/parser/plugins/add-quizzes.js (1)
3-36: Quiz question serialization cleanly migrated to i18n‑aware HTML helpersBinding
toHtml = createMdastToHtml(file.data.lang)and routing question text, distractors and answer throughgetQuestion/getDistractorskeeps the existing validation (including “three distractors required”) while enabling zh-CN ruby rendering. The logic is sound; theif (!distractors)guard is effectively redundant but harmless given the prior length check.client/i18n/locales/chinese/translations.json (1)
1357-1376: Newspeaking-modalstrings are English placeholdersThe
speaking-modalblock is fully in English in the Chinese locale. This is fine functionally, but for a smoother UX you may want to localize these strings in a later translation pass (at least the button labels like “Play”, “Record”, “Stop”).client/i18n/locales/ukrainian/translations.json (1)
1357-1376: Consider translatingspeaking-modalUI textAll
speaking-modalstrings are currently English in the Ukrainian locale. Functionality is unaffected, but this will appear inconsistent next to the rest of the localized UI. Consider adding Ukrainian translations in a future localization pass.client/i18n/locales/espanol/translations.json (1)
1357-1376:speaking-modalblock added correctly; consider later localizationThe new speaking-modal keys and placeholders look correct and consistent with other locales, but all strings are in English; if full Spanish localization is desired here, these should be queued for translation.
client/i18n/locales/swahili/translations.json (1)
1357-1376: Speaking modal keys added; English text can be localized laterThe new speaking-modal block is well-formed and matches other locales. All strings are English; if you want a fully Swahili UI here, plan a follow-up localization pass.
client/i18n/locales/chinese-traditional/translations.json (1)
1357-1376: Speaking modal block added; English strings acceptable as placeholdersThe speaking-modal structure and interpolation tokens are correct. Since all strings are English, consider scheduling Traditional Chinese translations if you want this UI fully localized.
client/i18n/locales/swahili/intro.json (1)
7491-7492: Spanish A1 alphabet renames and new blocks – check slug usage and placeholdersThe renames (
es-a1-chapter-the-spanish-alphabet,es-a1-module-alphabet-and-special-characters,es-a1-quiz-the-alphabet) and added vowel/consonant/review/practice blocks look conceptually consistent.Two follow‑ups to consider:
- The new module intro for
es-a1-module-alphabet-and-special-charactersstill contains"PLACEHOLDER: Write the module intro here.", and the new alphabet‑related blocks all have emptyintroarrays. These strings will surface directly to learners unless hidden or replaced before launch.- Since module and block slugs changed, ensure any upstream curriculum config, routing, and tests that referenced the old identifiers are updated to avoid broken links.
Also applies to: 7496-7497, 7506-7509, 7556-7558, 7608-7623
client/i18n/locales/chinese/intro.json (3)
1383-1383: Align A2 English title wording with B1 for consistencyA2 uses “A2 English for Developers (Beta) Certification”, while B1 uses “B1 English for Developers Certification (Beta)”. Consider standardizing the pattern (e.g. “… Certification (Beta)”) across both for consistency in UI copy.
- "title": "A2 English for Developers (Beta) Certification", + "title": "A2 English for Developers Certification (Beta)",
4809-4812: Clarify “shortest path algorithm” wording (optional)“Implement the shortest path algorithm to find the shortest path” is a bit tautological. Consider naming the specific algorithm (e.g. Dijkstra) or rephrasing slightly to be more informative.
- "title": "Implement the Shortest Path Algorithm", - "intro": [ - "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." - ] + "title": "Implement a Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement a shortest path algorithm to find the shortest route between two nodes in a graph." + ]
6285-6285: Unify v9 certification “in development” notesThe notes for
front-end-development-libraries-v9,python-v9, andrelational-databases-v9include guidance about completing available courses, butback-end-development-and-apis-v9only states that it is in development. For a consistent learner experience, consider using the same two-sentence pattern for all four.- "note": "This certification is currently in development and will be available soon.", + "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.",Also applies to: 6627-6627, 7085-7085, 7321-7321
client/i18n/locales/chinese-traditional/intro.json (1)
4810-4812: Shortest-path workshop text is fine; consider fixing nearby BFS typoThe new shortest-path workshop title and intro are clear and technically accurate.
Right below, the breadth-first search description has a small typo (“bread-first search algorithm”). Consider correcting it for clarity:
- "workshop-breadth-first-search": { - "title": "Implement the Breadth-First Search Algorithm", - "intro": [ - "In this workshop, you will use the bread-first search algorithm to generate all valid combinations of parentheses." - ] - }, + "workshop-breadth-first-search": { + "title": "Implement the Breadth-First Search Algorithm", + "intro": [ + "In this workshop, you will use the breadth-first search algorithm to generate all valid combinations of parentheses." + ] + },Also applies to: 4821-4824
client/i18n/locales/english/intro.json (3)
2375-2378: Numerictitlefields for internal blocks (qpra,kagw,trvf, etc.) are semantically oddThese blocks now use objects like
"title": "30"/"258"with emptyintroarrays. If these values are internal metadata (for example, question counts) migrated from bare numbers into objects (as suggested by the AI summary), consider moving them into a dedicated field (e.g.questionCount) and givingtitleeither a human‑readable label or omitting it from the UI entirely. Otherwise, there’s a risk of raw numbers showing up as block titles in the interface or confusing future maintainers.Based on learnings, these look like structural conversions of prior numeric values – worth confirming they are not rendered directly to users.
Also applies to: 4176-4179, 4452-4470, 4489-4496, 8046-8049
7600-7607: Empty-stringintroarrays for new A1 Spanish/Chinese blocksSeveral new A1 blocks (
es-a1-learn-meet-luna,es-a1-learn-meet-mateo,zh-a1-learn-initials,zh-a1-learn-the-team,zh-a1-learn-my-family) useintro: ["", ""]as placeholders. That’s valid JSON, but it will likely render as empty paragraphs instead of being treated as “no content yet”.If these are true placeholders, consider using
intro: []or a single explicit placeholder string so downstream rendering and translators can distinguish “missing” from “intentionally blank”.Also applies to: 8775-8778, 8830-8832, 8838-8840
9018-9020: Add missingintroarrays for daily-coding-challenge
The super-block and its nested block both omitintro; add an empty array to each:"daily-coding-challenge": { "title": "Daily Coding Challenge", + "intro": [], "blocks": { "daily-coding-challenge": { "title": "Daily Coding Challenge", + "intro": [] } } }client/i18n/locales/ukrainian/intro.json (1)
2076-2081: Newworkshop-bookstore-pageblock is structurally correctKey, nesting under
full-stack-developer.blocks, and content format (title+introarray) all look good and consistent with neighboring workshop blocks. Since this is the Ukrainian locale, consider adding a Ukrainian translation for thetitleandintrolater when translations are ready.client/i18n/locales/german/intro.json (1)
7491-7491: A1 Spanish alphabet chapter/module and block additions are coherent, but intros are emptyThe new A1 Spanish alphabet chapter (
es-a1-chapter-the-spanish-alphabet), module (es-a1-module-alphabet-and-special-characters), and related blocks (alphabet quiz, vowels, consonants & special characters, alphabet review/practice) are named consistently and fit the emerging structure. However, many of these blocks still have empty intro arrays (`["", ""]), which will render as blank paragraphs in the UI.Consider either:
- Providing at least one short descriptive intro string per block, or
- Using an empty array
[]when there’s intentionally no intro, to avoid empty bullets/paragraphs.Also applies to: 7496-7496, 7506-7506, 7557-7557, 7609-7609, 7613-7613, 7617-7617, 7621-7621
client/i18n/locales/italian/intro.json (4)
63-63: Legacy / V7–V8 title updates look consistentThe versioned titles for the legacy certifications are aligned with the new V7/V8 naming and do not introduce structural issues in the JSON; optional future improvement would be to localize the few remaining English titles into Italian for consistency.
Also applies to: 220-220, 303-303, 493-493, 556-556, 591-591, 699-699
2090-2095: Newworkshop-bookstore-pageblock is well-structuredThe new workshop block matches the existing
blocksschema (unique key,title,introarray) and should integrate cleanly; only optional follow-up is translating the English copy into Italian when convenient.
4823-4826: Shortest-path workshop block wiring looks correctThe
workshop-shortest-path-algorithmentry is structurally consistent with other workshop blocks and clearly describes its purpose; no code-level or schema issues here, just note that the text is English in the Italian locale and could be localized later if desired.
6299-6299: v9 certificationnotefields are coherent but remain untranslatedAll new
notestrings correctly describe that the v9 certifications are in development and match the surrounding English messaging used elsewhere in this file; if full Italian localization is a goal, consider translating these notes in a follow-up pass.Also applies to: 6641-6641, 7100-7100, 7335-7335
client/i18n/locales/japanese/intro.json (3)
493-739: Emptynotefor Front End Libraries V8 — verify UI behavior
"front-end-development-libraries"now has"note": "". If the UI renders the presence ofnoteregardless of contents, this could show as an empty note block. If the UI treats empty string the same as “no note”, this is fine, but it’s worth confirming.If the UI expects
noteto be absent when there is nothing to show, consider dropping the key entirely for this block instead of using an empty string.
4823-4827: Shortest path workshop description is fine, but wording could be less absoluteThe new
workshop-shortest-path-algorithmblock is well-formed. If you want slightly clearer wording, consider “a shortest path algorithm” instead of “the shortest path algorithm” to avoid implying there is a single canonical one.- "title": "Implement the Shortest Path Algorithm", + "title": "Implement a Shortest Path Algorithm", @@ - "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." + "In this workshop you will implement a shortest path algorithm to find the shortest path between two nodes in a graph."
6615-6623: Standardize “TypeScript” capitalization in review titleThe
review-typescriptblock uses “Typescript” while the rest of the content and module name use “TypeScript”. For consistency and searchability, it’s worth correcting the title here (and any mirrored copy in other superblocks).- "title": "Typescript Review", + "title": "TypeScript Review",You may want to apply the same change anywhere else this title appears (for example under the full-stack curriculum’s
review-typescriptblock).client/i18n/locales/espanol/intro.json (2)
2090-2095: Minor copy nit: “ids” wording in bookstore workshop descriptionThe new
workshop-bookstore-pageblock is clear and well-scoped. To tighten the copy, consider capitalizing the acronym or being explicit:- "In this workshop, you will practice working with classes, ids and the <code>div</code> element by building a bookstore page." + "In this workshop, you will practice working with classes, IDs and the <code>div</code> element by building a bookstore page." + // or: "with class and id attributes and the <code>div</code> element"Purely cosmetic; no functional impact.
7491-7496: A1 Spanish alphabet renames and new blocks are structurally sound; check empty introsThe chapter rename to “The Spanish Alphabet”, the module key/title change to
es-a1-module-alphabet-and-special-characters, the updated quiz title, and the new supporting blocks (es-a1-learn-vowels,es-a1-learn-consonants-and-special-characters,es-a1-review-the-alphabet,es-a1-practice-the-alphabet) all line up consistently with the new structure and naming.The only open question is that these new blocks have
intro: ["", ""], so they will render with empty description text until filled. If that’s intentional for now, no action needed; otherwise, you may want to stub minimal descriptive intros so learners don’t see blank sections. I can help draft concise intros if you’d like.Also applies to: 7506-7509, 7557-7558, 7608-7623
📜 Review details
Configuration used: Environment YAML
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (112)
api/src/routes/protected/certificate.test.ts(3 hunks)client/gatsby-node.js(0 hunks)client/i18n/locales/chinese-traditional/intro.json(18 hunks)client/i18n/locales/chinese-traditional/translations.json(3 hunks)client/i18n/locales/chinese/intro.json(18 hunks)client/i18n/locales/chinese/translations.json(3 hunks)client/i18n/locales/english/intro.json(19 hunks)client/i18n/locales/espanol/intro.json(18 hunks)client/i18n/locales/espanol/translations.json(3 hunks)client/i18n/locales/german/intro.json(18 hunks)client/i18n/locales/german/translations.json(3 hunks)client/i18n/locales/italian/intro.json(18 hunks)client/i18n/locales/italian/translations.json(3 hunks)client/i18n/locales/japanese/intro.json(18 hunks)client/i18n/locales/japanese/translations.json(3 hunks)client/i18n/locales/korean/intro.json(18 hunks)client/i18n/locales/korean/translations.json(3 hunks)client/i18n/locales/portuguese/intro.json(20 hunks)client/i18n/locales/portuguese/translations.json(3 hunks)client/i18n/locales/swahili/intro.json(18 hunks)client/i18n/locales/swahili/translations.json(3 hunks)client/i18n/locales/ukrainian/intro.json(18 hunks)client/i18n/locales/ukrainian/translations.json(3 hunks)client/src/client-only-routes/show-daily-coding-challenge.tsx(2 hunks)client/src/components/formHelpers/form-fields.tsx(5 hunks)client/src/components/layouts/global.css(1 hunks)client/src/components/profile/components/time-line.tsx(2 hunks)client/src/redux/prop-types.ts(1 hunks)client/src/templates/Challenges/classic/show.tsx(4 hunks)client/src/templates/Challenges/codeally/show.tsx(2 hunks)client/src/templates/Challenges/components/preview.tsx(1 hunks)client/src/templates/Challenges/exam/show.tsx(3 hunks)client/src/templates/Challenges/fill-in-the-blank/show.tsx(3 hunks)client/src/templates/Challenges/generic/show.tsx(3 hunks)client/src/templates/Challenges/ms-trophy/show.tsx(4 hunks)client/src/templates/Challenges/projects/backend/show.tsx(3 hunks)client/src/templates/Challenges/projects/frontend/show.tsx(3 hunks)client/src/templates/Challenges/quiz/show.tsx(2 hunks)client/src/templates/Introduction/components/super-block-intro.tsx(0 hunks)client/src/templates/Introduction/intro.css(1 hunks)client/src/templates/Introduction/super-block-intro.tsx(1 hunks)curriculum/challenges/english/blocks/lab-factorial-calculator/66c07238b01053abaf812065.md(1 hunks)curriculum/challenges/english/blocks/lecture-accessible-media-elements/672a55fbc2d95a9453151caf.md(3 hunks)curriculum/challenges/english/blocks/lecture-animations-and-accessibility/672aa8d65995be62ef1c7515.md(1 hunks)curriculum/challenges/english/blocks/lecture-html-fundamentals/670803abcb3e980233da4768.md(2 hunks)curriculum/challenges/english/blocks/lecture-html-fundamentals/6708382cf088b216580a9ff1.md(3 hunks)curriculum/challenges/english/blocks/lecture-html-fundamentals/67083868d5fdcb17bf8c14bd.md(4 hunks)curriculum/challenges/english/blocks/lecture-html-fundamentals/670838b10ee87a18e5faff62.md(1 hunks)curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672985445d7da807c6b4f406.md(2 hunks)curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672990ecf71a852804ababe7.md(4 hunks)curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a54bc58319c8fe6f78ad4.md(1 hunks)curriculum/challenges/english/blocks/lecture-introduction-to-aria/672a551975938a916c74802c.md(1 hunks)curriculum/challenges/english/blocks/lecture-understanding-form-validation/6733d3a33abdd27cd562bdf2.md(4 hunks)curriculum/challenges/english/blocks/lecture-understanding-html-attributes/6708143cab2b583ecd3324f5.md(5 hunks)curriculum/challenges/english/blocks/lecture-understanding-nuanced-semantic-elements/672995bda6c67e369aaf8588.md(2 hunks)curriculum/challenges/english/blocks/lecture-understanding-performance-in-web-applications/67d2f7cf63fafe7d20270498.md(2 hunks)curriculum/challenges/english/blocks/lecture-understanding-the-html-boilerplate/670839051794aa19fcef6dc8.md(0 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672bafe4ef812b78696b0e27.md(3 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672baff13bc5b3789691c75c.md(2 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672baffc684be178dd02fa06.md(1 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672bb009952c7a7904a750cb.md(1 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672bb015cfc889794359c4e0.md(1 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02009ffc0797ca567ab.md(1 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02ecb230779bbbaccd9.md(1 hunks)curriculum/challenges/english/blocks/lecture-user-centered-design/672bb03999f39379f67d8972.md(1 hunks)curriculum/challenges/english/blocks/lecture-what-is-css/672aa5e1f8b935577acfb2b9.md(2 hunks)curriculum/challenges/english/blocks/lecture-what-is-css/672acbbe2891564c4e316164.md(2 hunks)curriculum/challenges/english/blocks/lecture-working-with-audio-and-video-elements/67168278ac6df6a799555db5.md(5 hunks)curriculum/challenges/english/blocks/lecture-working-with-css-flexbox/672aa7f7284b235f46f7d4e9.md(1 hunks)curriculum/challenges/english/blocks/lecture-working-with-forms/6729974ec29be33cb00eb54d.md(4 hunks)curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cd3d59756726657efb8.md(2 hunks)curriculum/challenges/english/blocks/lecture-working-with-forms/672a4cf959443073a6774908.md(3 hunks)curriculum/challenges/english/blocks/lecture-working-with-images-and-svgs/6716825aff3434a71fdc3e99.md(1 hunks)curriculum/challenges/english/blocks/lecture-working-with-links/6716744f7245947a3dd60009.md(1 hunks)curriculum/challenges/english/blocks/lecture-working-with-links/67168323932391a9ee0d3a9e.md(5 hunks)curriculum/challenges/english/blocks/lecture-working-with-media/6716743531fc9a797351c21e.md(2 hunks)curriculum/challenges/english/blocks/lecture-working-with-media/671682b3983489a819507553.md(1 hunks)curriculum/challenges/english/blocks/lecture-working-with-relative-and-absolute-units/672bb83c3a9906945536cff2.md(2 hunks)curriculum/challenges/english/blocks/lecture-working-with-specialized-semantic-elements/672995ffdfd2f337f5f215f8.md(3 hunks)curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md(1 hunks)curriculum/challenges/english/blocks/workshop-build-a-heart-icon/686daa7ed79ceacd0b264e7e.md(1 hunks)curriculum/challenges/english/blocks/workshop-cat-photo-app/5ef9b03c81a63668521804ee.md(1 hunks)curriculum/challenges/english/blocks/workshop-quincys-job-tips/68e90335bd53a901c41dfc13.md(1 hunks)curriculum/i18n-curriculum(1 hunks)curriculum/schema/scene-assets.js(1 hunks)curriculum/structure/blocks/en-a2-certification-exam.json(1 hunks)curriculum/structure/superblocks/back-end-development-and-apis-v9.json(1 hunks)curriculum/structure/superblocks/front-end-development-libraries-v9.json(1 hunks)curriculum/structure/superblocks/javascript-v9.json(2 hunks)curriculum/structure/superblocks/python-v9.json(3 hunks)curriculum/structure/superblocks/relational-databases-v9.json(1 hunks)curriculum/structure/superblocks/responsive-web-design-v9.json(2 hunks)e2e/cert-username-case-navigation.spec.ts(2 hunks)e2e/map.spec.ts(1 hunks)e2e/preview.spec.ts(2 hunks)shared/config/certification-settings.ts(3 hunks)tools/challenge-editor/api/configs/super-block-list.ts(1 hunks)tools/challenge-parser/parser/__fixtures__/with-chinese-mcq.md(1 hunks)tools/challenge-parser/parser/__fixtures__/with-chinese-quizzes.md(1 hunks)tools/challenge-parser/parser/plugins/add-assignment.js(1 hunks)tools/challenge-parser/parser/plugins/add-quizzes.js(1 hunks)tools/challenge-parser/parser/plugins/add-quizzes.test.js(2 hunks)tools/challenge-parser/parser/plugins/add-text.js(2 hunks)tools/challenge-parser/parser/plugins/add-text.test.js(3 hunks)tools/challenge-parser/parser/plugins/add-video-question.js(1 hunks)tools/challenge-parser/parser/plugins/add-video-question.test.js(4 hunks)tools/challenge-parser/parser/plugins/utils/i18n-stringify.js(1 hunks)tools/challenge-parser/parser/plugins/utils/i18n-stringify.test.js(1 hunks)tools/challenge-parser/parser/plugins/utils/mdast-to-html.js(1 hunks)tools/client-plugins/gatsby-source-challenges/create-challenge-nodes.js(1 hunks)tools/daily-challenges/helpers.ts(2 hunks)tools/daily-challenges/types.ts(1 hunks)
💤 Files with no reviewable changes (3)
- client/src/templates/Introduction/components/super-block-intro.tsx
- client/gatsby-node.js
- curriculum/challenges/english/blocks/lecture-understanding-the-html-boilerplate/670839051794aa19fcef6dc8.md
🧰 Additional context used
🪛 LanguageTool
curriculum/challenges/english/blocks/lecture-importance-of-semantic-html/672990ecf71a852804ababe7.md
[style] ~80-~80: This phrase is redundant. Consider using “inside”.
Context: ...or and add a <a href="#">Products</a> inside of the nav and see the changes in the pr...
(OUTSIDE_OF)
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02ecb230779bbbaccd9.md
[style] ~10-~10: Consider removing “of” to be more concise
Context: ... Don't worry about trying to understand all of the code. The goal of the examples is to sh...
(ALL_OF_THE)
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb015cfc889794359c4e0.md
[style] ~10-~10: Consider removing “of” to be more concise
Context: ... Don't worry about trying to understand all of the code. The goal of the examples is to sh...
(ALL_OF_THE)
curriculum/challenges/english/blocks/lecture-user-centered-design/672baffc684be178dd02fa06.md
[style] ~10-~10: Consider removing “of” to be more concise
Context: ... Don't worry about trying to understand all of the code. The goal of the examples is to sh...
(ALL_OF_THE)
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb03999f39379f67d8972.md
[style] ~10-~10: Consider removing “of” to be more concise
Context: ... Don't worry about trying to understand all of the code. The goal of the examples is to sh...
(ALL_OF_THE)
curriculum/challenges/english/blocks/workshop-cat-photo-app/5ef9b03c81a63668521804ee.md
[style] ~24-~24: Using many exclamation marks might seem excessive (in this case: 3 exclamation marks for a text that’s 661 characters long)
Context: ... /<\s*!doctype\s+html\s*>/i); ``` Your <!DOCTYPE html> must be located at the to...
(EN_EXCESSIVE_EXCLAMATION)
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb02009ffc0797ca567ab.md
[style] ~10-~10: Consider removing “of” to be more concise
Context: ... Don't worry about trying to understand all of the code. The goal of the examples is to sh...
(ALL_OF_THE)
curriculum/challenges/english/blocks/lecture-user-centered-design/672bb009952c7a7904a750cb.md
[style] ~10-~10: Consider removing “of” to be more concise
Context: ... Don't worry about trying to understand all of the code. The goal of the examples is to sh...
(ALL_OF_THE)
curriculum/challenges/english/blocks/lecture-understanding-form-validation/6733d3a33abdd27cd562bdf2.md
[style] ~56-~56: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...expected. But maybe we don't want that. Maybe, instead, we'd like to show the charact...
(REP_MAYBE)
curriculum/challenges/english/blocks/lecture-html-fundamentals/670803abcb3e980233da4768.md
[style] ~12-~12: This phrase is redundant. Consider using “inside”.
Context: ... element. Add another paragraph element inside of the div element and see the changes i...
(OUTSIDE_OF)
[style] ~31-~31: This phrase is redundant. Consider using “inside”.
Context: ...tionelement below the first one. Then inside of thesectionelement, ah2andp` e...
(OUTSIDE_OF)
curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md
[style] ~86-~86: In contexts where ‘if’ is followed by ‘or’, using ‘whether’ may be more appropriate (and formal).
Context: ...ench. The i element does not indicate if the text is important or not, it only s...
(IF_WHETHER)
[style] ~96-~96: Consider an alternative for the often overused word ‘important’.
Context: ... to bring attention to text that is not important for the meaning of the content. It's co...
(NOT_IMPORTANT)
[style] ~106-~106: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...o represent the term being defined. - Description Details (dd) element: used to repre...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~149-~149: Use a hyphen to join words.
Context: ... is, you can show its full form, a human readable description, with the title a...
(QB_NEW_EN_HYPHEN)
curriculum/challenges/english/blocks/lecture-user-centered-design/672baff13bc5b3789691c75c.md
[style] ~10-~10: Consider removing “of” to be more concise
Context: ... Don't worry about trying to understand all of the code. The goal of the examples is to sh...
(ALL_OF_THE)
🪛 markdownlint-cli2 (0.18.1)
tools/challenge-parser/parser/__fixtures__/with-chinese-mcq.md
27-27: Multiple headings with the same content
(MD024, no-duplicate-heading)
49-49: Multiple headings with the same content
(MD024, no-duplicate-heading)
tools/challenge-parser/parser/__fixtures__/with-chinese-quizzes.md
27-27: Multiple headings with the same content
(MD024, no-duplicate-heading)
49-49: Multiple headings with the same content
(MD024, no-duplicate-heading)
| @@ -6275,6 +6282,7 @@ | |||
| }, | |||
| "front-end-development-libraries-v9": { | |||
| "title": "Front End Development Libraries Certification", | |||
| "note": "This certification is currently in development and will be available soon. We recommend completing the available courses below to prepare for the certification exam once it is released.", | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
English-only note strings in zh-Hant locale
The new note fields for the v9 certifications (Front End Libraries, Python, Relational Databases, Back End Development & APIs, and Full Stack Developer) are all English-only in this Chinese Traditional locale file.
If the intent is full localization, these should eventually be translated into zh-Hant to match the rest of this file; otherwise users will see a mix of Chinese and English in the same section.
Also applies to: 6627-6627, 7085-7086, 7321-7321, 7439-7439
🤖 Prompt for AI Agents
client/i18n/locales/chinese-traditional/intro.json lines 6285 (and also 6627,
7085-7086, 7321, 7439): the "note" values are in English but this is the zh-Hant
locale; replace these English-only note strings with proper Chinese Traditional
translations that match the tone and meaning of the original (keep JSON string
structure and punctuation), ensure any placeholders or special characters remain
unchanged, and verify encoding/escaping so the file remains valid JSON.
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | ||
| "intro": [ | ||
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | ||
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | ||
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | ||
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | ||
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | ||
| "To qualify for the exam, you must earn the following certifications:", | ||
| "- Responsive Web Design Certification", | ||
| "- JavaScript Certification", | ||
| "- Front End Development Libraries Certification", | ||
| "- Python Certification", | ||
| "- Relational Databases Certification", | ||
| "- Back End Development and APIs Certification", | ||
| "Pass the exam to earn your Full Stack Developer Certification." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix small grammar issue in Full Stack Developer note
There’s a minor but user-visible grammar error in the full-stack-developer-v9.note text: “you're progress is saved” should be “your progress is saved”.
- "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
+ "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | |
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | |
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | |
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", | |
| "Pass the exam to earn your Full Stack Developer Certification." | |
| "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", | |
| "Pass the exam to earn your Full Stack Developer Certification." |
🤖 Prompt for AI Agents
In client/i18n/locales/chinese-traditional/intro.json around lines 7438 to 7448,
the note string contains a grammar typo "you're progress is saved"; update that
phrase to "your progress is saved" (replace "you're" with "your") so the
sentence reads correctly, then validate the JSON and run a quick linter/locale
build to ensure no formatting issues.
| "title": "Certified Full Stack Developer Curriculum", | ||
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | ||
| "intro": [ | ||
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | ||
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | ||
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | ||
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | ||
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | ||
| "To qualify for the exam, you must earn the following certifications:", | ||
| "- Responsive Web Design Certification", | ||
| "- JavaScript Certification", | ||
| "- Front End Development Libraries Certification", | ||
| "- Python Certification", | ||
| "- Relational Databases Certification", | ||
| "- Back End Development and APIs Certification", | ||
| "Pass the exam to earn your Full Stack Developer Certification." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix grammar in full‑stack v9 note (“you're progress”)
There’s a small typo in the note: “you're progress is saved” → “your progress is saved”. The rest of the messaging and the list of required certifications look good.
- "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
+ "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",🤖 Prompt for AI Agents
client/i18n/locales/chinese/intro.json around lines 7437 to 7448: the note
string contains a typo "you're progress is saved" — replace "you're" with "your"
so it reads "your progress is saved"; keep the existing sentence structure and
punctuation otherwise, and ensure the JSON string remains valid (proper
quotes/escaping).
| "title": "Implement the Shortest Path Algorithm", | ||
| "intro": [ | ||
| "In this workshop you will implement the shortest path algorithm to find the shortest path between two nodes in a graph." | ||
| ] | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix typo in BFS description: “bread-first” → “breadth-first”
Right below this block, the breadth-first search workshop intro (Line 4837) says “the bread-first search algorithm”, which is a visible typo:
- "In this workshop, you will use the bread-first search algorithm to generate all valid combinations of parentheses."
+ "In this workshop, you will use the breadth-first search algorithm to generate all valid combinations of parentheses."The updated shortest-path block here is fine; this suggestion is to keep the surrounding algorithm descriptions accurate.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In client/i18n/locales/espanol/intro.json around lines 4823-4827 (and
specifically at ~4837) the workshop intro for breadth-first search contains a
typo (“bread-first”); update the Spanish text to read “breadth-first” (i.e.,
replace “bread-first search” with “breadth-first search”) so the algorithm name
is correct in the localized intro.
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | ||
| "intro": [ | ||
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | ||
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | ||
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | ||
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | ||
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | ||
| "To qualify for the exam, you must earn the following certifications:", | ||
| "- Responsive Web Design Certification", | ||
| "- JavaScript Certification", | ||
| "- Front End Development Libraries Certification", | ||
| "- Python Certification", | ||
| "- Relational Databases Certification", | ||
| "- Back End Development and APIs Certification", | ||
| "Pass the exam to earn your Full Stack Developer Certification." | ||
| ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix typo in full‑stack v9 note (“you're progress” → “your progress”)
There’s a small grammar issue in the note: “you're progress is saved” should be “your progress is saved”. Everything else in the title/intro block reads well and matches the new certification structure.
- "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
+ "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | |
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | |
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | |
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", | |
| "Pass the exam to earn your Full Stack Developer Certification." | |
| ], | |
| "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", | |
| "Pass the exam to earn your Full Stack Developer Certification." | |
| ], |
🤖 Prompt for AI Agents
client/i18n/locales/german/intro.json lines 7452-7463: The note string contains
a typo "you're progress is saved" which should be "your progress is saved";
update the "note" value to replace "you're" with "your" (keeping the rest of the
sentence, punctuation and JSON string escaping unchanged) so the grammar reads
correctly.
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | ||
| "intro": [ | ||
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | ||
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | ||
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | ||
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | ||
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | ||
| "To qualify for the exam, you must earn the following certifications:", | ||
| "- Responsive Web Design Certification", | ||
| "- JavaScript Certification", | ||
| "- Front End Development Libraries Certification", | ||
| "- Python Certification", | ||
| "- Relational Databases Certification", | ||
| "- Back End Development and APIs Certification", | ||
| "Pass the exam to earn your Full Stack Developer Certification." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix grammar in Full Stack v9 note (“you're” → “your”)
Minor copy issue:
Current text: don't worry - you're progress is saved.
Should be: don't worry - your progress is saved.
- "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
+ "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | |
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | |
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | |
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", | |
| "Pass the exam to earn your Full Stack Developer Certification." | |
| "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", | |
| "Pass the exam to earn your Full Stack Developer Certification." |
🤖 Prompt for AI Agents
client/i18n/locales/swahili/intro.json lines 7452-7462: Fix the grammar typo in
the note string where "you're progress is saved" should be "your progress is
saved"; update the text to replace "you're" with "your" so the sentence reads
"don't worry - your progress is saved."
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | ||
| "intro": [ | ||
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | ||
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | ||
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | ||
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | ||
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | ||
| "To qualify for the exam, you must earn the following certifications:", | ||
| "- Responsive Web Design Certification", | ||
| "- JavaScript Certification", | ||
| "- Front End Development Libraries Certification", | ||
| "- Python Certification", | ||
| "- Relational Databases Certification", | ||
| "- Back End Development and APIs Certification", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix grammar in Full Stack Developer v9 note (you're progress → your progress)
Minor text bug in user-facing copy:
"you're progress is saved"should be"your progress is saved".
Other v9 note strings look fine.
- "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",
+ "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.",📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "note": "If you were previously working through our full stack curriculum, don't worry - you're progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This course provides a comprehensive pathway to becoming a Certified Full Stack Developer, covering all the essential technologies required to build modern, scalable web applications from start to finish.", | |
| "Through a blend of interactive lessons, coding exercises, and real-world projects, you will master both frontend and backend development. You'll work with HTML, CSS, and JavaScript to build responsive user interfaces, explore React and TypeScript for advanced web applications, and learn to manage data with relational databases - and on the backend, you'll use Git, Npm, Node.js, and Python to create powerful server-side solutions.", | |
| "By the end of this course, you'll have the practical skills and experience to confidently develop complete web applications, preparing you for a successful career as a Full Stack Developer.", | |
| "This certification will take you a substantial amount of time and effort to complete. If you start now, you may be ready to start the remaining material and final exam when we launch it in the coming months." | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", | |
| "note": "If you were previously working through our full stack curriculum, don't worry - your progress is saved. We split it into smaller certifications for you to earn along your journey. This certification is currently in development and will be available soon. Start earning the required certifications so you're ready when it launches.", | |
| "intro": [ | |
| "This certification represents the culmination of your full stack developer journey. It demonstrates your ability to build complete, modern web applications from start to finish.", | |
| "To qualify for the exam, you must earn the following certifications:", | |
| "- Responsive Web Design Certification", | |
| "- JavaScript Certification", | |
| "- Front End Development Libraries Certification", | |
| "- Python Certification", | |
| "- Relational Databases Certification", | |
| "- Back End Development and APIs Certification", |
🤖 Prompt for AI Agents
In client/i18n/locales/ukrainian/intro.json around lines 7438 to 7447, the note
string contains a grammatical error "you're progress is saved"; update that
substring to "your progress is saved" so the user-facing copy reads correctly,
keeping the rest of the sentence and punctuation unchanged.
| value: string | undefined, | ||
| error: unknown, | ||
| isURL: boolean, | ||
| name: string | ||
| ) => { | ||
| if (!value) return null; | ||
| let validationError: string | undefined; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Early return in nullOrWarning will suppress all errors/warnings for empty values
With if (!value) return null;, any empty value short-circuits the function, so:
sourceCodeLinkExistsValidatorand other validators never run on empty strings.error(e.g. “required” or other form-level errors) is also ignored when the field is empty.
This likely means required GitHub/source-code link messages no longer appear when the field is blank. If that’s not intentional, consider letting explicit errors still show while skipping URL/aux validators for empty values, e.g.:
- ) => {
- if (!value) return null;
+ ) => {
+ if (!value && !error) return null;This preserves the “no warnings on untouched/empty fields” behaviour, while still surfacing real errors from the form layer.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| value: string | undefined, | |
| error: unknown, | |
| isURL: boolean, | |
| name: string | |
| ) => { | |
| if (!value) return null; | |
| let validationError: string | undefined; | |
| value: string | undefined, | |
| error: unknown, | |
| isURL: boolean, | |
| name: string | |
| ) => { | |
| if (!value && !error) return null; | |
| let validationError: string | undefined; |
🤖 Prompt for AI Agents
In client/src/components/formHelpers/form-fields.tsx around lines 49 to 55, the
early return "if (!value) return null" suppresses all validators and hides
explicit form errors for empty values; instead, remove the unconditional early
return and change logic so that when value is empty you skip only URL/aux
validators (like sourceCodeLinkExistsValidator) but still check and return any
provided "error" (or other form-level errors) so required/validation messages
surface for blank fields; implement by branching on !value: run error-handling
path that returns the explicit error/warning, otherwise run the full set of
validators.
| - **Block Quotation (`blockquote`) element**: used to represent a section that is quoted from another source. This element has a `cite` attribute. The value of the `cite` attribute is the URL of the source. | ||
|
|
||
| ```html | ||
| <blockquote cite="https://www.freecodecamp.org/news/learn-to-code-book/"> | ||
| "Can you imagine what it would be like to be a successful developer? To have built software systems that people rely upon?" | ||
| </blockquote> | ||
| ``` | ||
|
|
||
| - **Citation (`cite`) element**: used to attribute the source of the referenced work visually. Marks up the title of the reference. | ||
|
|
||
| ```html | ||
| <div> | ||
| ```html | ||
| <blockquote cite="https://www.freecodecamp.org/news/learn-to-code-book/"> | ||
| "Can you imagine what it would be like to be a successful developer? To have built software systems that people rely upon?" | ||
| </blockquote> | ||
| <p> | ||
| -Quincy Larson, <cite>How to learn to Code and Get a Developer Job [Full Book].</cite> | ||
| </p> | ||
| </div> | ||
| ``` | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarify that blockquote’s cite attribute is optional, not required
The text says the blockquote “has a cite attribute” and that the value is the URL. In HTML, cite is optional and can reference the source in other ways (e.g., URN, DOI, not only URLs). Consider rephrasing to “can have a cite attribute whose value identifies the source (often a URL)”.
🤖 Prompt for AI Agents
In
curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md
around lines 117 to 123, the text currently states that blockquote "has a cite
attribute" and implies it's required and only a URL; change the wording to make
cite optional and more flexible—for example, say the blockquote "can have a cite
attribute whose value identifies the source (often a URL, but can be other
identifiers like URNs or DOIs)"—and update the surrounding sentence to reflect
that cite is optional rather than required.
| - **Contact Address (`address`) element**: used to represent the contact information. | ||
| - **(Date) Time (`time`) element**: used to represent a date and/or time. The `datetime` attribute is used to translate dates and times into a machine-readable format. | ||
|
|
||
| ```html | ||
| <p> | ||
| The reservations are for the <time datetime="20:00">20:00 </time> | ||
| </p> | ||
| ``` | ||
| ```html | ||
| <p> | ||
| The reservations are for the <time datetime="20:00">20:00 </time> | ||
| </p> | ||
| ``` | ||
|
|
||
| - **ISO 8601 Date (`datetime`) attribute**: used to represent dates and times in a machine-readable format. The standard format is `YYYY-MM-DDThh:mm:ss`, with the capital `T` being a separator between the date and time. | ||
| - **Superscript (`sup`) element**: used to represent superscript text. Common use cases for the `sup` element would include exponents, superior lettering and ordinal numbers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Align time / datetime example with the ISO 8601 explanation
You describe the datetime value using the full ISO 8601 date‑time format (YYYY-MM-DDThh:mm:ss), but the example only uses 20:00. For consistency and clarity, consider an example like:
<time datetime="2025-12-17T20:00">8:00 PM on December 17, 2025</time>so learners see a concrete ISO‑style value that matches the text.
🤖 Prompt for AI Agents
In
curriculum/challenges/english/blocks/review-semantic-html/671a83934b61f64cefe87a61.md
around lines 157–167, the time/datetime example uses only "20:00" while the
explanatory text references full ISO 8601 format; update the example to include
a full ISO 8601 datetime value (e.g., YYYY-MM-DDThh:mm or YYYY-MM-DDThh:mm:ss)
in the datetime attribute and provide a human-friendly content string so the
example matches the written explanation and demonstrates both machine-readable
and readable forms.
Checklist:
mainbranch of freeCodeCamp.Closes #XXXXX
Summary by CodeRabbit
New Features
Improvements
Documentation
✏️ Tip: You can customize this high-level summary in your review settings.