Skip to content

Install adapters on Node.js 22, run CI on Node.js 24, and record the adapter peer pin - #374

Merged
woksin merged 9 commits into
mainfrom
fix/node-engines-371
Sep 29, 2026
Merged

woksin merged 9 commits into
mainfrom
fix/node-engines-371

Conversation

@woksin

@woksin woksin commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

The renderer adapters and Conformance now install on Node.js 22, and the migration guide describes how adapter versions pair with @cratis/components.

Fixed

  • @cratis/components.mui, @cratis/components.primereact, @cratis/components.primereact10 and @cratis/components.conformance declared engines.node >=23.0.0, so npm and pnpm with engine-strict refused to install them on Node.js 22, a maintained LTS release. They now declare >=22.0.0. CI installs each adapter on Node.js 22 with engine-strict on. (Decide the supported Node.js range for published packages #371)
  • MIGRATION.md said the adapters declare a @cratis/components >=4 <5 peer range. Each published adapter and Conformance release requires exactly the @cratis/components version it was released with, so install and upgrade them together. (Note the exact adapter peer pin in ADR 0004 #370)

checkout v7.0.1, setup-node v7.0.0, cache v6.1.0, upload-artifact v7.0.1 and
repository-dispatch v4.0.1, each pinned by commit SHA. The v4/v3 pins target
the deprecated Node 20 action runtime. None of the breaking changes apply:
setup-node only auto-caches npm, and the publish job already strips the
registry token placeholder that v7 no longer exports (#369)
Node.js 23 reached end of life in June 2025. Node.js 24 is the active LTS
and satisfies every workspace's engines range; the full local gate passes
on 24.20.0 (#369)
The decision text says adapters keep the >=4 <5 peer range; that is the
source manifests. Published adapters peer on exactly their own release, as
#233 decided. A dated clarification says so without changing the accepted
text (#370)
#233 decided that published adapters and Conformance peer on exactly their
own Components release. That replaces the peer range sentence in ADR 0004,
so it gets its own record, and ADR 0004's banner now points to it instead
of calling the change a clarification. MIGRATION.md, which ships in the
package, no longer says adapters declare >=4 <5 (#370)
setup-node v7 no longer exports a placeholder NODE_AUTH_TOKEN; it only
writes _authToken=${NODE_AUTH_TOKEN} to .npmrc, which the step still
removes (#369)
….lock

The publish cache restored yarn.lock and was keyed only on package.json, so
a lockfile-only change hit a stale entry that overwrote the checked-out
lockfile, and the job could publish a dependency graph CI never tested. It
now uses the build jobs' key and leaves yarn.lock to the checkout (#369)
They declared >=23.0.0, so npm and pnpm with engine-strict refused to
install them on Node.js 22, a maintained LTS release, although the core
package declares no engines and nothing needs 23. Each adapter builds and
passes its consumer check on Node.js 22, and Conformance passes its CI
there (#371)
One leg per adapter installs the packed adapter with npm on Node.js 22 and
engine-strict on, so an engines range that excludes the oldest supported
Node.js, or an adapter that fails there, fails CI. A planted >=23 range
failed this check locally with EBADENGINE (#371)
@woksin woksin added the patch label Sep 29, 2026
@woksin woksin self-assigned this Sep 29, 2026
@woksin
woksin merged commit c82ea70 into main Sep 29, 2026
53 of 54 checks passed
@woksin
woksin deleted the fix/node-engines-371 branch September 29, 2026 12:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant