Skip to content

feat: add eol page #7990

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: main
Choose a base branch
from
Open

feat: add eol page #7990

wants to merge 15 commits into from

Conversation

bmuenzenmeyer
Copy link
Collaborator

@bmuenzenmeyer bmuenzenmeyer commented Jul 16, 2025

Description

We now have a dedicated EOL page!

Changes not directly related to the scope

  • We also now have a more generic modal solution
  • Article layouts have site footers.

Validation

EOL Page - live preview at https://nodejs-org-git-eol-openjs.vercel.app/en/eol

image

EOL / Vulnerability Table

image

Details

image

Link updated here

image

and here

image

Vulnerability Blog Posts

image

Related Issues

closes #7906
closes #7899

Check List

  • All other links on all alert boxes across the website (blog post from Matteo, Download pages, Version modal, etc) go to the /EOL page - did not do Matteo's blog post yet - would rather someone else choose to editorialize that.
  • should /eol be in the nav? I did not include it anywhere currently
  • I have read the Contributing Guidelines and made commit messages that follow the guideline.
  • I have run pnpm format to ensure the code follows the style guide.
  • I have run pnpm test to check if all tests are passing.
  • I have run pnpm build to check if the website builds without errors.
  • I've covered new added functionality with unit tests if necessary.

Copy link

vercel bot commented Jul 16, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
nodejs-org ✅ Ready (Inspect) Visit Preview Jul 25, 2025 11:43pm

@bmuenzenmeyer
Copy link
Collaborator Author

ran with HUSKY=0 - eslint failures on git commit on Windows. investigating

Copy link

codecov bot commented Jul 16, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 72.99%. Comparing base (f76285a) to head (1dccbd5).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7990      +/-   ##
==========================================
+ Coverage   72.98%   72.99%   +0.01%     
==========================================
  Files          95       95              
  Lines        8324     8324              
  Branches      215      215              
==========================================
+ Hits         6075     6076       +1     
+ Misses       2248     2247       -1     
  Partials        1        1              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@ovflowd
Copy link
Member

ovflowd commented Jul 17, 2025

I feel this page should use a layout without the sidebar/metabar FYI

@bmuenzenmeyer
Copy link
Collaborator Author

bmuenzenmeyer commented Jul 17, 2025

I feel this page should use a layout without the sidebar/metabar FYI

that's fine - i just grabbed one quick - using page the default, does not render correctly (should open an issue for that. so using article for now)

this is page/default (not used anywhere)

image

@ovflowd
Copy link
Member

ovflowd commented Jul 19, 2025

@avivkeller can we use the new website for CVEs? https://www.cve.org/CVERecord?id=CVE-2025-23166 instead of cve.mitre.org?

@ovflowd
Copy link
Member

ovflowd commented Jul 19, 2025

Also this description:

"There are 4+ known vulnerabilities associated with this Node.js release. Please review their severity and details to understand the potential impact." not sure if it is fitting. I think we should lean more into what CVEs are how to understand them what having these issues are... IDK; Throwing the "Please review their severity and details to understand the potential impact." to the end-user might not be ideal. I mean in the end that's whaty they're going to do anyways, but we could use such section to explain actual concrete details of what CVEs means, what clicking these links means, idk.

@ovflowd
Copy link
Member

ovflowd commented Jul 19, 2025

Also can the "is EoL" be "has reached EOL" or "is EOL" or just "is vulnerable"

@ovflowd

This comment was marked as resolved.

@ovflowd

This comment was marked as resolved.

@ovflowd

This comment was marked as resolved.

@bmuenzenmeyer

This comment was marked as resolved.

@bmuenzenmeyer
Copy link
Collaborator Author

@joyeecheung i wanted to respectfully point out 1a4a53a - it felt important to include but i didnt want to pave over your proposed changes. happy to discuss further

@joyeecheung
Copy link
Member

i wanted to respectfully point out 1a4a53a - it felt important to include but i didnt want to pave over your proposed changes. happy to discuss further

I think I removed it by mistake. Thanks for catching it!

@ovflowd
Copy link
Member

ovflowd commented Jul 22, 2025

Thank you so much @joyeecheung, @jasnell and @RafaelGSS for your early reviews ❤️

Also asking for the rest of @nodejs/tsc to give a chime in here! (I recall, @RaisinTen and @anonrig) also had thoughts on the EOL debacle.

@ovflowd
Copy link
Member

ovflowd commented Jul 22, 2025

image

Should we maybe update the 2nd line to be "For any EOL Node.js version"?

Copy link
Member

@RaisinTen RaisinTen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have reviewed the contents of eol.mdx and it mostly looks okay to me

Co-authored-by: Darshan Sen <[email protected]>
Signed-off-by: Claudio Wunder <[email protected]>
@mcollina
Copy link
Member

I would cut the list to Node 12: apparently our data for 11 and before is significantly incomplete.

@bmuenzenmeyer
Copy link
Collaborator Author

bmuenzenmeyer commented Jul 24, 2025

@mcollina I should have updated the table screenshots - I worked with the security WG (via nodejs/security-wg#1502) to properly label 60+ unknown CVEs, mostly from that time period.

This logic will always be up to date on the website based on the security WG info

image

Does this give you more confidence in the experience?

@ovflowd
Copy link
Member

ovflowd commented Jul 24, 2025

@bmuenzenmeyer could you increase a tiny bit the gap between the pills?

@bmuenzenmeyer
Copy link
Collaborator Author

@ovflowd done
image

i dont want to add more without having to worry about chip wrapping

@jasnell
Copy link
Member

jasnell commented Jul 24, 2025

An ask for later (definitely not for this PR): It would be nice to have a toggle for the table that hides any rows for non-LTS versions.

@mcollina
Copy link
Member

Just remove "V0" from the list, it's pre-foundation things.

@avivkeller
Copy link
Member

Just remove "V0" from the list, it's pre-foundation things.

Can we retitle it to "Earlier Versions"?

@bmuenzenmeyer
Copy link
Collaborator Author

@ovflowd
Copy link
Member

ovflowd commented Jul 25, 2025

Just remove "V0" from the list, it's pre-foundation things.

@mcollina do you still wish for this section to be removed?

Copy link
Contributor

github-actions bot commented Jul 25, 2025

Lighthouse Results

URL Performance Accessibility Best Practices SEO Report
/en 🟢 99 🟢 100 🟢 100 🟢 100 🔗
/en/about 🟢 99 🟢 97 🟢 100 🟠 88 🔗
/en/about/previous-releases 🟢 99 🟢 93 🟢 100 🟠 89 🔗
/en/download 🟢 93 🟢 100 🟢 100 🟢 100 🔗
/en/blog 🟢 99 🟢 100 🟢 96 🟢 100 🔗


export const SEVERITY_ORDER = ['critical', 'high', 'medium', 'low'] as const;

const SEVERITY_KIND_MAP = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should these constants maybe be on a constants file?


import VulnerabilityChip from './Chip';

export const SEVERITY_ORDER = ['critical', 'high', 'medium', 'low'] as const;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here, could be reused.

vulnerabilities,
}) => {
// Group vulnerabilities by severity
const groupedBySeverity = vulnerabilities.reduce<Record<string, number>>(
Copy link
Member

@ovflowd ovflowd Jul 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is an useMemo needed here? (I doubt, but just asking)

import Link from '#site/components/Link';

const EOLAlert = () => {
const t = useTranslations('components.eolAlert');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Usually we don't do shorthands, we alays call t() with the full translation path to make it easier to statically analyze and find usages.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(This applies to call useTranslations() calls on your PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Dedicated EOL page Move the homepage security link to the banner
9 participants