chore(repo): bump node to 26 and update mise tool versions#35604
chore(repo): bump node to 26 and update mise tool versions#35604FrozenPandaz wants to merge 5 commits intomasterfrom
Conversation
Update mise.toml: node 24.11.0 -> 26.0.0, java 24 -> 26, maven 3.9.11 -> 3.9.15, rust 1.90.0 -> 1.95.0, vale 3.13.1 -> 3.14.1. Bump hard-coded node-version: '24' references in workflows (banner-monitor, generate-embeddings, issue-notifier, pr-title-validation) and the nightly e2e matrix (process-matrix.ts) to '26' to match. https://claude.ai/code/session_01J2rRAQgqVkLXraa6rmp9T2
✅ Deploy Preview for nx-dev ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for nx-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
View your CI Pipeline Execution ↗ for commit 24155a2
☁️ Nx Cloud last updated this comment at |
Restore node 24 entries in workflow matrix lists so 26 is added alongside, not replacing it. https://claude.ai/code/session_01J2rRAQgqVkLXraa6rmp9T2
| @@ -19,7 +19,7 @@ jobs: | |||
| - name: Install Node.js | |||
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |||
| with: | |||
| node-version: '24' | |||
| node-version: '26' | |||
There was a problem hiding this comment.
Matrix inconsistency: The strategy matrix defines both ['24', '26'] (line 13), which would create 2 jobs, but the setup-node step hardcodes node-version: '26' (line 22). This means both matrix jobs will use Node 26 instead of testing with both versions.
The setup-node step should reference the matrix variable:
node-version: ${{ matrix.node-version }}Alternatively, if only Node 26 testing is desired, remove the matrix entirely and keep just node-version: ['26'] on line 13.
| node-version: ['24', '26'] | |
| steps: | |
| - name: Checkout | |
| - name: Install Node.js | |
| uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 | |
| with: | |
| node-version: ${{ matrix.node-version }} | |
Spotted by Graphite
Is this helpful? React 👍 or 👎 to let us know.
Single-element node-version arrays (generate-embeddings.yml, process-matrix.ts macos and windows entries) get replaced with 26. The multi-version linux nightly matrix keeps 24 and gains 26 as an additional entry. https://claude.ai/code/session_01J2rRAQgqVkLXraa6rmp9T2
| os_timeout: 60, | ||
| package_managers: ['npm', 'pnpm', 'yarn'], | ||
| node_versions: ['20.19.0', '22.13.0', '24.0.0'], | ||
| node_versions: ['20.19.0', '22.13.0', '24.0.0', '26.0.0'], |
There was a problem hiding this comment.
Inconsistent Node version update strategy. This line adds '26.0.0' to the array (keeping '24.0.0'), while line 84 replaces '24.0.0' with '26.0.0' for MacOS. This will expand the Linux test matrix from 3 to 4 Node versions (running 12 combinations instead of 9 per package manager), significantly increasing CI time and costs.
Based on the PR description using "→" notation and the MacOS replacement pattern, this should likely be:
node_versions: ['20.19.0', '22.13.0', '26.0.0'],If testing against Node 24 is still required, then line 84 should also keep '24.0.0' for consistency.
| node_versions: ['20.19.0', '22.13.0', '24.0.0', '26.0.0'], | |
| node_versions: ['20.19.0', '22.13.0', '26.0.0'], | |
Spotted by Graphite
Is this helpful? React 👍 or 👎 to let us know.
…upport Gradle 8.14.x has known issues with Java 25+ and would fail under the bumped Java 26 toolchain (gradle/gradle#35111). Gradle 9.5.0 adds the required Java 26 runtime support. Regenerated via ./gradlew wrapper --gradle-version 9.5.0 --distribution-type bin. The 8.14.3 build emitted deprecation warnings during the wrapper task ("incompatible with Gradle 9.0"), so build scripts may need follow-up fixes before nightly e2e on Java 26 is fully green. https://claude.ai/code/session_01J2rRAQgqVkLXraa6rmp9T2
The com.github.johnrengelman.shadow fork is unmaintained and breaks on
Gradle 9 due to fileMode and mainClassName API removals. com.gradleup
.shadow is the maintained continuation; 9.4.1 is the latest stable and
requires Gradle 9+.
batch-runner already uses application { mainClass.set(...) } and does
not touch fileMode, so no consumer-side changes are needed.
https://claude.ai/code/session_01J2rRAQgqVkLXraa6rmp9T2
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We updated the Kotlin Maven plugin version from 1.9.22 to 2.1.0 in pom.xml so the compiler can parse Java 26 version strings, and updated NxProjectExtension and NxTaskExtension to use MapProperty<String, Any> (non-nullable) to satisfy the tightened type bounds introduced in Gradle 9.5.0. These changes unblock both failing tasks without altering any business logic or user-facing DSL behavior.
Warning
❌ We could not verify this fix.
Suggested Fix changes
diff --git a/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxProjectExtension.kt b/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxProjectExtension.kt
index 18023cd9..0d42265d 100644
--- a/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxProjectExtension.kt
+++ b/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxProjectExtension.kt
@@ -39,7 +39,7 @@ import org.gradle.api.provider.MapProperty
*/
open class NxProjectExtension @Inject constructor(objects: ObjectFactory) {
/** JSON root for project-level Nx config */
- val json: MapProperty<String, Any?> = objects.mapProperty(String::class.java, Any::class.java)
+ val json: MapProperty<String, Any> = objects.mapProperty(String::class.java, Any::class.java)
// DSL methods for building JSON config
@@ -65,7 +65,7 @@ open class NxProjectExtension @Inject constructor(objects: ObjectFactory) {
json.put(key, arr)
}
- fun merge(map: Map<String, Any?>) = json.putAll(asJsonMap(map))
+ fun merge(map: Map<String, Any?>) = asJsonMap(map).forEach { (k, v) -> v?.let { json.put(k, it) } }
}
/**
diff --git a/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxTaskExtension.kt b/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxTaskExtension.kt
index e4a13fd4..287fed7e 100644
--- a/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxTaskExtension.kt
+++ b/packages/gradle/project-graph/src/main/kotlin/dev/nx/gradle/NxTaskExtension.kt
@@ -41,7 +41,7 @@ import org.gradle.api.provider.MapProperty
*/
open class NxTaskExtension @Inject constructor(objects: ObjectFactory) {
/** JSON root for task-level Nx config */
- val json: MapProperty<String, Any?> = objects.mapProperty(String::class.java, Any::class.java)
+ val json: MapProperty<String, Any> = objects.mapProperty(String::class.java, Any::class.java)
// DSL methods for building JSON config
@@ -67,7 +67,7 @@ open class NxTaskExtension @Inject constructor(objects: ObjectFactory) {
json.put(key, arr)
}
- fun merge(map: Map<String, Any?>) = json.putAll(asJsonMap(map))
+ fun merge(map: Map<String, Any?>) = asJsonMap(map).forEach { (k, v) -> v?.let { json.put(k, it) } }
}
/** Type-safe accessor for the nx extension in Kotlin DSL. */
diff --git a/pom.xml b/pom.xml
index e3ea3854..792d958a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Dependency Versions -->
- <kotlin.version>1.9.22</kotlin.version>
+ <kotlin.version>2.1.0</kotlin.version>
<maven.version>4.0.0-rc-5</maven.version>
<maven.plugin.tools.version>3.11.0</maven.plugin.tools.version>
<jackson.version>2.16.1</jackson.version>
🔔 Heads up, your workspace has pending recommendations ↗ to auto-apply fixes for similar failures.
Or Apply changes locally with:
npx nx-cloud apply-locally Wcy7-XJPo
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
Current Behavior
mise.tomland several workflow files pin older tool versions:node-version: '24'and the nightly e2ematrix uses
'24.0.0'.Expected Behavior
Tool versions are bumped to current latest stable releases, and the
hard-coded Node 24 references in workflows are updated to match the
new Node 26 default.
mise.tomlchanges:Workflow changes (Node 24 → 26):
.github/workflows/banner-monitor.yml.github/workflows/generate-embeddings.yml.github/workflows/issue-notifier.yml.github/workflows/pr-title-validation.yml.github/workflows/nightly/process-matrix.ts(matrix24.0.0→26.0.0)Left untouched intentionally:
publish.ymlNODE_VERSION: 22.16.0,openjdk21, anddotnet-9.0-sdkreferences — these are pinned to specific versions for the release
pipeline / native binary builds and shouldn't be moved without a
separate decision.
e2e-matrix.ymlmatrixnode_version: 20/22entries — theseintentionally test against supported Node LTS versions.
bun = "1.3"andpnpm@10.28.2— not part of this bump (out ofscope per request).
Related Issue(s)
N/A
Generated by Claude Code