chore: remove Active/Maintenance LTS distinction#8817
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
👋 Codeowner Review RequestThe following codeowners have been identified for the changed files: Team reviewers: @nodejs/nodejs-website Please review the changes when you have a chance. Thank you! 🙏 |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #8817 +/- ##
==========================================
- Coverage 74.27% 73.88% -0.40%
==========================================
Files 104 105 +1
Lines 8849 8883 +34
Branches 328 326 -2
==========================================
- Hits 6573 6563 -10
- Misses 2274 2319 +45
+ Partials 2 1 -1 ☔ View full report in Codecov by Sentry. |
📦 Build Size ComparisonSummary
Changes➕ Added Assets (7)
➖ Removed Assets (6)
|
51388a1 to
22069b7
Compare
PR SummaryMedium Risk Overview Adjusts generated release metadata so Improves downloads version picker UX by extending the shared Reviewed by Cursor Bugbot for commit d90307a. Bugbot is set up for automated code reviews on this repo. Configure here. |
22069b7 to
f6327c5
Compare
There was a problem hiding this comment.
Pull request overview
This PR updates the website’s release-status model to remove the internal “Active LTS” vs “Maintenance LTS” distinction, collapsing both into a single LTS status, and improves download UX by showing status badges in the version dropdown.
Changes:
- Simplifies release status handling to
Current | LTS | End-of-life, updating generators, types, and affected UI. - Adds optional per-item badges to the shared
SelectUI component and uses them in the downloads version dropdown. - Updates release-date display to use an
initialDatefield (earliest release) where “first released” is shown.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/ui-components/src/Common/Select/index.tsx | Adds optional badge support to select items and renders badges in dropdown + selected value. |
| packages/ui-components/src/Common/Select/index.module.css | Adds badge styling for select items. |
| packages/ui-components/src/Common/Select/StatelessSelect/index.tsx | Renders badges for stateless/no-script select variants (selected + menu items). |
| apps/site/util/download/constants.json | Updates supported release statuses and status ordering to match the new LTS model. |
| apps/site/types/releases.ts | Collapses NodeReleaseStatus union and replaces currentStart with initialDate on release source types. |
| apps/site/scripts/orama-search/get-documents.mjs | Updates API docs indexing to target the “LTS” line rather than Active/Maintenance split. |
| apps/site/next-env.d.ts | Updates the generated routes type import path. |
| apps/site/next-data/generators/releaseData.mjs | Simplifies status computation and adds initialDate derived from earliest release in the line. |
| apps/site/next-data/generators/tests/releaseData.test.mjs | Expands tests for simplified status logic and the new initialDate behavior. |
| apps/site/components/withReleaseAlertBox.tsx | Updates alert handling to use the unified LTS status. |
| apps/site/components/withFooter.tsx | Updates footer “Latest LTS” pill to use unified LTS. |
| apps/site/components/withDownloadSection.tsx | Defaults download route selection to Current vs LTS instead of Active/Maintenance LTS array. |
| apps/site/components/Releases/ReleaseOverview/index.tsx | Shows “first released” date via initialDate. |
| apps/site/components/Releases/PreviousReleasesTable/TableBody.tsx | Updates badge-kind mapping and “first released” date to use LTS + initialDate. |
| apps/site/components/Downloads/Release/VersionDropdown.tsx | Switches dropdown to show a badge per version status (LTS/Current/EoL) and updates routing logic. |
Comments suppressed due to low confidence (1)
apps/site/components/withDownloadSection.tsx:46
- With the new unified
LTSstatus,WithNodeRelease status={initialRelease}will select the firstLTSentry it finds, which may be the older maintenance LTS line rather than the latest LTS line (depending onreleaseDataordering). If the download page should default to the latest LTS, please adjust the selection logic to explicitly choose the newest LTS (e.g. bymajor/releaseDate) instead of relying on array ordering.
// Decides which initial release to use based on the current pathname
const initialRelease = pathname.endsWith('/current') ? 'Current' : 'LTS';
return (
<WithNodeRelease status={initialRelease}>
{({ release }) => (
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
f6327c5 to
0024c4e
Compare
0024c4e to
d90307a
Compare
Description
In preparation for the change to how Node.js will be shipping releases, this removes the Active/Maintenance distinction for LTS release lines in the website's logic. This distinction was never shown to users; it was only used in internal logic and was always just reported as LTS to the user viewing the site.
Also, I've updated the version dropdown on the downloads page to make use of badges to make it clearer what status a given release has, as during the conversation around this change, it was flagged that it is odd we show EoL releases there and it isn't super obvious that they're EoL.
Validation
All release lines continue to report their correct statuses and dates on the site.
Related Issues
I think we can say that this finally closes #8277.
Check List
pnpm formatto ensure the code follows the style guide.pnpm testto check if all tests are passing.pnpm buildto check if the website builds without errors.