Skip to content

Commit 3aaeef4

Browse files
authored
fix(node): keep odd versions Current through maintenance window (#242)
1 parent 5f9d583 commit 3aaeef4

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

src/runtimes/node/lifecycle.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,10 @@ func (lp *lifecycleProvider) resolve(e scheduleEntry) string {
9191
if e.LTS != "" {
9292
return string(lifecycle.MaintenanceLTS)
9393
}
94-
// Odd releases enter "maintenance" before EOL but are not LTS.
95-
return string(lifecycle.EOL)
94+
// Odd releases have a maintenance window before EOL but are not LTS;
95+
// keep them labeled Current until their end date so the display
96+
// matches nodejs.org's release schedule page.
97+
return string(lifecycle.Current)
9698
}
9799

98100
if lts := parseDate(e.LTS); !lts.IsZero() && !today.Before(lts) {

src/runtimes/node/lifecycle_test.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,26 @@ func TestLifecycleProvider_VersionStatus(t *testing.T) {
5555
want: string(lifecycle.Current),
5656
},
5757
{
58-
name: "v23 odd version in maintenance is EOL (not LTS)",
58+
name: "v23 odd version in maintenance window is still Current (not LTS)",
5959
now: "2025-04-15",
6060
version: "23.5.0",
61-
want: string(lifecycle.EOL),
61+
want: string(lifecycle.Current),
6262
},
6363
{
6464
name: "v23 after end is EOL",
6565
now: "2025-07-01",
6666
version: "23.5.0",
6767
want: string(lifecycle.EOL),
6868
},
69+
// v25: start 2025-10-15, maintenance 2026-04-01, end 2026-06-01 (no LTS)
70+
// Regression for #241: odd version past maintenance but before end
71+
// should show as Current, not EOL.
72+
{
73+
name: "v25 past maintenance but before end is Current",
74+
now: "2026-04-20",
75+
version: "25.9.0",
76+
want: string(lifecycle.Current),
77+
},
6978
// Edge cases
7079
{
7180
name: "unknown major returns empty",

0 commit comments

Comments
 (0)