From be23a18f016d23e470c584cee7f534204b0272f5 Mon Sep 17 00:00:00 2001 From: avivkeller Date: Mon, 14 Jul 2025 17:33:35 -0400 Subject: [PATCH 1/4] fix(release): fix issues with maintenance and active lts --- .../site/app/[locale]/next-data/api-data/route.ts | 4 +--- .../Downloads/DownloadReleasesTable/index.tsx | 15 ++++----------- .../Downloads/Release/ReleaseCodeBox.tsx | 2 +- .../Downloads/Release/VersionDropdown.tsx | 4 ++-- .../components/Downloads/ReleaseModal/index.tsx | 2 +- apps/site/components/withDownloadSection.tsx | 4 +++- apps/site/next-data/generators/releaseData.mjs | 6 +++--- apps/site/pages/en/index.mdx | 2 +- apps/site/types/releases.ts | 4 ++-- apps/site/util/download/constants.json | 2 +- 10 files changed, 19 insertions(+), 26 deletions(-) diff --git a/apps/site/app/[locale]/next-data/api-data/route.ts b/apps/site/app/[locale]/next-data/api-data/route.ts index 04b2c5a493024..b8f10636d1f09 100644 --- a/apps/site/app/[locale]/next-data/api-data/route.ts +++ b/apps/site/app/[locale]/next-data/api-data/route.ts @@ -23,9 +23,7 @@ const getPathnameForApiFile = (name: string, version: string) => export const GET = async () => { const releases = provideReleaseData(); - const { versionWithPrefix } = releases.find( - release => release.status === 'LTS' - )!; + const { versionWithPrefix } = releases.find(release => release.isLts)!; const gitHubApiResponse = await fetch( getGitHubApiDocsUrl(versionWithPrefix), diff --git a/apps/site/components/Downloads/DownloadReleasesTable/index.tsx b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx index 462221477b8e3..e3d83f154edc3 100644 --- a/apps/site/components/Downloads/DownloadReleasesTable/index.tsx +++ b/apps/site/components/Downloads/DownloadReleasesTable/index.tsx @@ -8,20 +8,12 @@ import getReleaseData from '#site/next-data/releaseData'; const BADGE_KIND_MAP = { 'End-of-life': 'warning', - Maintenance: 'neutral', - LTS: 'info', + 'Maintenance LTS': 'neutral', + 'Active LTS': 'info', Current: 'default', Pending: 'default', } as const; -const BADGE_TEXT_MAP = { - 'End-of-life': 'End-of-Life (EOL)', - Maintenance: 'Maintenance LTS', - LTS: 'Active LTS', - Current: 'Current', - Pending: 'Pending', -} as const; - const DownloadReleasesTable: FC = async () => { const releaseData = await getReleaseData(); @@ -52,7 +44,8 @@ const DownloadReleasesTable: FC = async () => { - {BADGE_TEXT_MAP[release.status]} + {release.status} + {release.status === 'End-of-life' ? ' (EoL)' : ''} diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index 54ef178b43672..ccd9073412f41 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -127,7 +127,7 @@ const ReleaseCodeBox: FC = () => { )} - {release.status === 'LTS' && ( + {release.isLts && ( { - if (status === 'LTS') { + if (status.endsWith('LTS')) { return `${version} (LTS)`; } @@ -37,7 +37,7 @@ const VersionDropdown: FC = () => { ({ versionWithPrefix }) => versionWithPrefix === version ); - if (release?.status === 'LTS' && pathname.includes('current')) { + if (release?.isLts && pathname.includes('current')) { redirect({ href: '/download', locale: locale }); return; } diff --git a/apps/site/components/Downloads/ReleaseModal/index.tsx b/apps/site/components/Downloads/ReleaseModal/index.tsx index 8abb1aa952d7e..5ae420ed70cf8 100644 --- a/apps/site/components/Downloads/ReleaseModal/index.tsx +++ b/apps/site/components/Downloads/ReleaseModal/index.tsx @@ -54,7 +54,7 @@ const ReleaseModal: FC = ({ )} - {release.status === 'LTS' && ( + {release.isLts && (
= async ({ children }) => { .concat(snippets); // Decides which initial release to use based on the current pathname - const initialRelease = pathname.endsWith('/current') ? 'Current' : 'LTS'; + const initialRelease = pathname.endsWith('/current') + ? 'Current' + : 'Active LTS'; return ( diff --git a/apps/site/next-data/generators/releaseData.mjs b/apps/site/next-data/generators/releaseData.mjs index 03800543b882f..555d240409e30 100644 --- a/apps/site/next-data/generators/releaseData.mjs +++ b/apps/site/next-data/generators/releaseData.mjs @@ -12,11 +12,11 @@ const getNodeReleaseStatus = (now, support) => { } if (maintenanceStart && now >= new Date(maintenanceStart)) { - return 'Maintenance'; + return 'Maintainence LTS'; } if (ltsStart && now >= new Date(ltsStart)) { - return 'LTS'; + return 'Active LTS'; } if (currentStart && now >= new Date(currentStart)) { @@ -96,7 +96,7 @@ const generateReleaseData = async () => { version: latestVersion.semver.raw, versionWithPrefix: `v${latestVersion.semver.raw}`, codename: major.support.codename || '', - isLts: status === 'LTS', + isLts: status.endsWith('LTS'), npm: latestVersion.dependencies.npm || '', v8: latestVersion.dependencies.v8, releaseDate: latestVersion.releaseDate, diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx index c08fc9c9bc2ab..ef36bd8187fed 100644 --- a/apps/site/pages/en/index.mdx +++ b/apps/site/pages/en/index.mdx @@ -28,7 +28,7 @@ layout: home
- + {({ release }) => Node.js LTS diff --git a/apps/site/types/releases.ts b/apps/site/types/releases.ts index cf71f7bea406d..f57709c13041a 100644 --- a/apps/site/types/releases.ts +++ b/apps/site/types/releases.ts @@ -1,6 +1,6 @@ export type NodeReleaseStatus = - | 'LTS' - | 'Maintenance' + | 'Active LTS' + | 'Maintenance LTS' | 'Current' | 'End-of-life' | 'Pending'; diff --git a/apps/site/util/download/constants.json b/apps/site/util/download/constants.json index a04695ee3dd40..72b7756e18884 100644 --- a/apps/site/util/download/constants.json +++ b/apps/site/util/download/constants.json @@ -142,7 +142,7 @@ "name": "Brew", "compatibility": { "os": ["MAC", "LINUX"], - "releases": ["Current", "LTS"] + "releases": ["Current", "Active LTS", "Maintenance LTS"] }, "url": "https://brew.sh/", "info": "layouts.download.codeBox.platformInfo.brew" From 861ddf0bdf4d4ec97de45e7c30b56b3e11d686a0 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Mon, 14 Jul 2025 17:42:07 -0400 Subject: [PATCH 2/4] Update apps/site/app/[locale]/next-data/api-data/route.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller --- apps/site/app/[locale]/next-data/api-data/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/app/[locale]/next-data/api-data/route.ts b/apps/site/app/[locale]/next-data/api-data/route.ts index b8f10636d1f09..0d889a061a6c9 100644 --- a/apps/site/app/[locale]/next-data/api-data/route.ts +++ b/apps/site/app/[locale]/next-data/api-data/route.ts @@ -23,7 +23,7 @@ const getPathnameForApiFile = (name: string, version: string) => export const GET = async () => { const releases = provideReleaseData(); - const { versionWithPrefix } = releases.find(release => release.isLts)!; + const { versionWithPrefix } = releases.find(release => release.status === 'Active LTS')!; const gitHubApiResponse = await fetch( getGitHubApiDocsUrl(versionWithPrefix), From 5f96ee0719e4839897aad61e90fadc8cb88b4ca2 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Mon, 14 Jul 2025 17:42:18 -0400 Subject: [PATCH 3/4] Update apps/site/next-data/generators/releaseData.mjs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Aviv Keller --- apps/site/next-data/generators/releaseData.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/next-data/generators/releaseData.mjs b/apps/site/next-data/generators/releaseData.mjs index 555d240409e30..4faef90dcb217 100644 --- a/apps/site/next-data/generators/releaseData.mjs +++ b/apps/site/next-data/generators/releaseData.mjs @@ -12,7 +12,7 @@ const getNodeReleaseStatus = (now, support) => { } if (maintenanceStart && now >= new Date(maintenanceStart)) { - return 'Maintainence LTS'; + return 'Maintenance LTS'; } if (ltsStart && now >= new Date(ltsStart)) { From 8f3d21c48bc9dab6b5fa37cd3079e0fd87dffe10 Mon Sep 17 00:00:00 2001 From: avivkeller Date: Mon, 14 Jul 2025 17:46:46 -0400 Subject: [PATCH 4/4] fixup! --- apps/site/app/[locale]/next-data/api-data/route.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/site/app/[locale]/next-data/api-data/route.ts b/apps/site/app/[locale]/next-data/api-data/route.ts index 0d889a061a6c9..4ba97056079e4 100644 --- a/apps/site/app/[locale]/next-data/api-data/route.ts +++ b/apps/site/app/[locale]/next-data/api-data/route.ts @@ -23,7 +23,9 @@ const getPathnameForApiFile = (name: string, version: string) => export const GET = async () => { const releases = provideReleaseData(); - const { versionWithPrefix } = releases.find(release => release.status === 'Active LTS')!; + const { versionWithPrefix } = releases.find( + release => release.status === 'Active LTS' + )!; const gitHubApiResponse = await fetch( getGitHubApiDocsUrl(versionWithPrefix),