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 46 commits into
base: main
Choose a base branch
from
Open

feat: add eol page #7990

wants to merge 46 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 Aug 2, 2025 9:36pm

@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

❌ Patch coverage is 96.87500% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 72.91%. Comparing base (0a9ead8) to head (dd10604).
⚠️ Report is 10 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...ages/ui-components/src/Common/BaseButton/index.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7990      +/-   ##
==========================================
- Coverage   73.02%   72.91%   -0.12%     
==========================================
  Files          95       96       +1     
  Lines        8324     8359      +35     
  Branches      214      214              
==========================================
+ Hits         6079     6095      +16     
- Misses       2244     2263      +19     
  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

This comment was marked as resolved.

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

@@ -150,7 +150,9 @@ const getPage: FC<DynamicParams> = async props => {
// within a server-side context
return (
<MatterProvider {...sharedContext}>
<WithLayout layout={frontmatter.layout}>{content}</WithLayout>
<WithLayout layout={frontmatter.layout} modal={frontmatter.modal}>
Copy link
Member

Choose a reason for hiding this comment

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

I don't like this approach of modal metadata to be injected at layout-level, it implies you cannnot have different sort of modals per page.

Copy link
Member

Choose a reason for hiding this comment

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

Even less making it part of the frontmatter, which is even worse IMO.

const LayoutComponent = layouts[layout] ?? DefaultLayout;

if (modal) {
Copy link
Member

Choose a reason for hiding this comment

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

I don't think it should be responsibility of the Layout to surround itself with a provider.

You should surround the Modal itself with its provider. And the ModalProvider should probably not exist or not be needed to provide data. See for our example our WithRelease provider that allows you to inject the context itself to children.

const majorVersions =
vulnerability.vulnerable
.match(/\b\d+\b/g)
?.map(Number)
Copy link
Member

Choose a reason for hiding this comment

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

This is an odd way of extracting this, I think you can extract the matcher to the assignment of majorVersions to make it cleaner

?.map(Number)
.filter(major => !isNaN(major)) ?? [];

for (const majorVersion of majorVersions) {
Copy link
Member

Choose a reason for hiding this comment

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

It feels that these 2-dimensional for could be a array.reduce tbh

@@ -1,10 +1,13 @@
---
title: Node.js Releases
layout: about
modal: release
Copy link
Member

Choose a reason for hiding this comment

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

-1 for this approach. It hinders the ability of having multiple kind of modals per page and feels like an odd architectural choice.

Copy link
Member

Choose a reason for hiding this comment

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

Still strong -1 on this approach. This ain't a provider, this feels like a factory that you're injecting on layout-level which is egredgius at best.

Copy link
Member

@ovflowd ovflowd left a comment

Choose a reason for hiding this comment

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

Design-wise? ✔️, Content-Wise? ✔️, Code-wise/Architecture ❌

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