Skip to content

Conversation

gemy26
Copy link

@gemy26 gemy26 commented Sep 9, 2025

Summary

Drop Node 14 and 16 from CI and enforce Node >=18.18.0.

Why

  • prettier-plugin-jsdoc-type and ESLint 9+ rely on modern syntax (??=) that isn’t available in Node <18.
  • Running tests on Node 14/16 fails with syntax errors and engine warnings.
  • Keeping Node 14/16 in the matrix causes false negatives in CI.

Changes

  • Updated .github/workflows/ci.yml to test only on Node 18, 20, and 22.
  • Updated package.json:
    • Added "engines": { "node": ">=18.18.0" }

Verification

  • Ran pnpm lint, pnpm prettier --check ., and pnpm test locally — all passed.
  • Tried running inside a Docker container with Node 14 — failed.
  • Verified CI runs correctly on supported Node versions.

Impact

  • Node 14 and 16 are no longer supported.
  • Contributors and CI must now use Node >=18.0.0.

Summary by CodeRabbit

  • Chores

    • Updated CI to remove legacy Node 14/16 combinations and standardize a dedicated lint step.
    • Corrected step labels to reflect the ESLint version used in CI.
    • Raised the minimum supported Node version to 18.18+.
    • Updated the package manager to pnpm 8.15.6.
  • Documentation

    • Minor README formatting change with no functional impact.

Important

Drop Node 14/16 support in CI and enforce Node >=18.0.0 in package.json.

  • CI Configuration:
    • Updated .github/workflows/ci.yml to remove Node 14 and 16 from the test matrix.
    • CI now runs on Node 18, 20, and 22 only.
  • Package Requirements:
    • Updated package.json to enforce Node version >=18.0.0.
  • Impact:
    • Node 14 and 16 are no longer supported in CI or for contributors.
    • Contributors must use Node 18 or higher.

This description was created by Ellipsis for c1005fc. You can customize this summary. It will automatically update as commits are pushed.

Node 14 and 16 are incompatible with prettier-plugin-jsdoc-type.
This commit removes them from the CI matrix and updates package.json
to enforce Node >=18.18.0 and [email protected].
Copy link

changeset-bot bot commented Sep 9, 2025

⚠️ No Changeset found

Latest commit: 0c6c9da

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link

coderabbitai bot commented Sep 9, 2025

Walkthrough

Removed Node 14/16 ESLint matrix combos from CI, renamed the ESLint install step label, replaced the “Perf” step with a universal “Lint” step, and kept other CI steps unchanged. Updated engines.node to >=18.18.0 and packageManager to [email protected]. Added two NUL characters to README.md after the License section.

Changes

Cohort / File(s) Summary of changes
CI workflow updates
\.github/workflows/ci.yml
Dropped Node 14/16 with ESLint 8 from matrix; adjusted “Install ESLint” step name to use matrix.eslint; removed “Perf” step; added unconditional “Lint” step running pnpm lint; other steps unchanged.
Engine and package manager
package.json
Set engines.node to ">=18.18.0"; updated packageManager to "[email protected]".
Docs artifact
README.md
Inserted two NUL characters after the License section; no content changes otherwise.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Dev as Push/PR
  participant CI as GitHub Actions
  participant Node as Node Setup
  participant PNPM as pnpm
  participant Tests as Test Runner

  Dev->>CI: Trigger workflow
  CI->>Node: Setup Node (>=18.18.0 matrix only)
  CI->>PNPM: Install deps
  CI->>PNPM: Install ESLint (version from matrix.eslint)
  Note over CI,PNPM: Step label now references matrix.eslint
  CI->>PNPM: Lint (pnpm lint)
  Note over CI,PNPM: Replaces prior "Perf" step
  CI->>Tests: Run tests
  CI-->>Dev: Report results
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested labels

ci

Pre-merge checks (3 passed)

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title “ci!: drop Node 14/16 support” succinctly conveys the central update of removing Node 14 and 16 from the CI matrix and aligns with the conventional commit format by indicating a breaking change. It is clear, focused, and directly relates to the main change without unnecessary detail.
Description Check ✅ Passed The pull request description outlines the rationale, specific modifications to CI and package.json, verification steps, and project impact, all directly tied to dropping Node 14/16 support. This level of detail is directly relevant to the changeset and not generic or off-topic.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

Poem

I thump the ground—new lint in sight,
No Node fourteen to test tonight.
With pnpm eight, I lightly hop,
Engines bumped—no backward stop.
CI squeaks, “All green!”—what cheer! 🐇
I nibble docs—oops, a NUL appears.
Onward to tidy, crystal-clear!

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (2)
.github/workflows/ci.yml (2)

27-31: Drop commented matrix entries or justify with a note

Commented Node 14/16 include block is dead weight now that engines >=18.18.0. Either remove it or add a brief comment explaining historical context.

-        # include:
-        #   - node: 16
-        #     eslint: 8
-        #   - node: 14
-        #     eslint: 8
+        # Older Node versions (14/16) are no longer supported (see package.json engines).

49-51: Nit: step label uses node instead of eslint version

The step name says “Install ESLint ${{ matrix.node }}” but it installs ESLint ${{ matrix.eslint }}. Rename for clarity.

-      - name: Install ESLint ${{ matrix.node }}
+      - name: Install ESLint ${{ matrix.eslint }}
         if: ${{ matrix.eslint != 9 }}
         run: pnpm install -D eslint@${{ matrix.eslint }} @graphql-eslint/eslint-plugin@3 eslint-plugin-svelte@2 svelte@3 vue-eslint-parser@9
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between befda88 and c1005fc.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml (2 hunks)
  • package.json (1 hunks)

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed everything up to c1005fc in 1 minute and 30 seconds. Click for details.
  • Reviewed 48 lines of code in 2 files
  • Skipped 0 files when reviewing.
  • Skipped posting 2 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. .github/workflows/ci.yml:27
  • Draft comment:
    Remove commented-out code (both the 'include' matrix and 'Perf' step) if Node 14/16 support is permanently dropped.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The comment suggests removing commented code IF Node 14/16 support is dropped. However, looking at the active Node versions (18,20,22), it appears Node 14/16 support HAS been dropped. The commented code is now just noise. The comment is speculative ("if") rather than definitive, and the condition it specifies has already been met. The code could be commented out temporarily for testing or future reference. Maybe Node 14/16 support isn't permanently dropped but just temporarily disabled. The presence of only newer Node versions (18+) in the active matrix strongly suggests this is a permanent change. Keeping commented code creates maintenance debt. Delete this comment. The condition it specifies has already been met, and it's asking for verification rather than pointing out a clear issue.
2. package.json:15
  • Draft comment:
    Engine version is set to '>=18.0.0' but the PR description intends Node >=18.18.0. Update the engines field accordingly.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The comment references the PR description which we don't have access to. Without seeing the PR description, we can't verify if this suggestion is correct. This falls under the rule of needing strong evidence - we can't be sure this comment is correct without seeing the PR description. Additionally, this relates to dependency/version requirements which we're supposed to ignore. The comment might be correct if we had access to the PR description. The author might have explicitly stated they want to target Node 18.18.0. Even if the PR description does mention Node 18.18.0, our rules explicitly state we should not comment on dependency changes or assume anything about PR descriptions. We should delete this comment as it relates to dependency versioning (which we're told to ignore) and relies on PR description context we don't have.

Workflow ID: wflow_4P9wJJNfajGUtkRW

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
README.md (1)

200-200: Switch License link to HTTPS.

Minor polish; use HTTPS for opensource.org.

-[MIT](http://opensource.org/licenses/MIT)
+[MIT](https://opensource.org/licenses/MIT)
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d52d928 and 0c6c9da.

📒 Files selected for processing (1)
  • README.md (1 hunks)

Comment on lines +201 to +202
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Remove accidental NUL bytes from README (breaks rendering and can mark file as binary).

Two null characters slipped in after the License section. Delete these lines and ensure the file ends with a single newline.

Apply this diff:

-
-

Verify no other NULs remain:


🏁 Script executed:

#!/bin/bash
# Find NUL bytes in README (treat file as text)
rg -nUa '\x00' README.md || echo "No NUL bytes found."

Length of output: 11


Remove two NUL bytes from README.md (lines 201–202).

Delete these null characters to restore proper rendering:

-
-

Then verify no NULs remain:

rg -nUa '\x00' README.md || echo "No NUL bytes found."
🤖 Prompt for AI Agents
In README.md around lines 201–202, there are two NUL (0x00) characters that
break rendering; remove those two null bytes from the file (delete the
characters at those positions) and save the file, then run a binary-aware search
(for example, using ripgrep or another tool that can search for NULs) across
README.md to confirm no NUL bytes remain.

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.

1 participant