From f8dc6fc96adaf2af6b6f1415d969b2f16bb4894f Mon Sep 17 00:00:00 2001 From: Brandon Corbett Date: Tue, 21 Jul 2026 09:47:59 -0400 Subject: [PATCH] fix(verify): build the conformance adapter on Express 5 / Node 24 The verify adapter app pinned express@^4, but @seamless-auth/express now declares a peer of express@>=5 (alongside the ecosystem's move to Node 24). Installing the locally-built SDK tarball in --local mode aborted the adapter Docker build with an ERESOLVE peer conflict, canceling the whole compose build and failing every conformance run. Depend on express@^5.1.0 and @seamless-auth/express@^0.8.0, and bump the verify Docker images from node:20 to node:24 to match the ecosystem's supported runtime. server.mjs already uses only Express 5-safe APIs. --- .changeset/verify-express5-node24.md | 5 +++++ verify/adapter-app/Dockerfile | 2 +- verify/adapter-app/package.json | 4 ++-- verify/docker-compose.verify.yml | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/verify-express5-node24.md diff --git a/.changeset/verify-express5-node24.md b/.changeset/verify-express5-node24.md new file mode 100644 index 0000000..a74490d --- /dev/null +++ b/.changeset/verify-express5-node24.md @@ -0,0 +1,5 @@ +--- +"seamless-cli": patch +--- + +Fix the conformance harness (`seamless verify --local`) failing to build after the ecosystem moved to Express 5 on Node 24. The verify adapter app pinned `express@^4`, but `@seamless-auth/express` now requires `express@>=5` as a peer, so installing the locally-built SDK tarball aborted with an `ERESOLVE` peer conflict and the Docker build failed. The adapter now depends on `express@^5.1.0` (and `@seamless-auth/express@^0.8.0`), and the verify Docker images are bumped from `node:20` to `node:24` to match the ecosystem's supported runtime. diff --git a/verify/adapter-app/Dockerfile b/verify/adapter-app/Dockerfile index df40f72..f485f16 100644 --- a/verify/adapter-app/Dockerfile +++ b/verify/adapter-app/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20-alpine +FROM node:24-alpine WORKDIR /app RUN apk add --no-cache curl COPY package.json ./ diff --git a/verify/adapter-app/package.json b/verify/adapter-app/package.json index ce0e884..55367fe 100644 --- a/verify/adapter-app/package.json +++ b/verify/adapter-app/package.json @@ -5,9 +5,9 @@ "type": "module", "description": "Minimal adopter backend for the conformance harness — real @seamless-auth/express with a capture transport.", "dependencies": { - "@seamless-auth/express": "^0.6.0", + "@seamless-auth/express": "^0.8.0", "cookie-parser": "^1.4.6", "cors": "^2.8.5", - "express": "^4.19.2" + "express": "^5.1.0" } } diff --git a/verify/docker-compose.verify.yml b/verify/docker-compose.verify.yml index 9c89633..970cb62 100644 --- a/verify/docker-compose.verify.yml +++ b/verify/docker-compose.verify.yml @@ -123,7 +123,7 @@ services: additional_contexts: sdk: ./react-vendor dockerfile_inline: | - FROM node:20-slim AS builder + FROM node:24-slim AS builder WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci