Skip to content

chore(deps): move the starters onto the session-gated enrolment release - #86

Merged
Bccorb merged 1 commit into
mainfrom
chore/enrolment-moves-behind-a-session
Sep 8, 2026
Merged

chore(deps): move the starters onto the session-gated enrolment release#86
Bccorb merged 1 commit into
mainfrom
chore/enrolment-moves-behind-a-session

Conversation

@Bccorb

@Bccorb Bccorb commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Moves the starters onto the auth packages published today, which put passkey enrolment behind a signed-in session.

Template Package From To
react-vite, react-oauth @seamless-auth/react 0.11.0 0.12.0
api/express @seamless-auth/express 0.13.0 0.14.0
api/fastify @seamless-auth/fastify 0.4.0 0.5.0

Why the three move together

/webAuthn/register/start and /webAuthn/register/finish used to accept the ephemeral token the auth API mints from an email address alone, so anyone who knew an address could enrol a credential against that account and sign in as its owner. Both routes now read the access session instead.

seamless-auth-api stopped accepting the old token in 0.11.0, and there is no safe release order between the two sides: an older adapter sends what the API refuses, and these adapters send what an older API refuses, so enrolment answers 401 until both have landed. A project scaffolded from this tag should point at seamless-auth-api 0.12.0, the current release.

No shipped flow loses a step. Registration proves an address with an email OTP and verifying it issues a session, so the client already holds one by the time the passkey screen appears.

What changed here

Four package.json versions and their lockfiles, plus a changeset. Nothing else. createSeamlessAuthServer, requireAuth, requireRole and SeamlessAuthUser are unchanged, and the adapters' other work in 0.14.0 and 0.5.0 is route plumbing behind them (a DELETE /admin/organizations/:organizationId proxy, and the query string restored on GET /admin/users and the login-stats endpoint). The React additions are optional, so no starter source moves.

Lockfile churn is limited to the seamless packages: @seamless-auth/core follows the adapters to 0.14.0, and @seamless-auth/types was already at 0.20.0 from #84.

Follows #84, which took the same starters from react 0.9.0, express 0.12.0 and fastify 0.3.1 to the versions this builds on.

Verification

Each of the four templates was installed fresh and run the way the release PR's matrix will:

Template npm run check npm run build
react-vite 80 tests pass pass
react-oauth 84 tests pass pass
api/express 14 tests pass pass
api/fastify 14 tests pass pass

Root npm run validate and npm run format:check pass.

These are the starters' own gates, so they prove the templates compile and their tests hold against the new packages. They do not exercise enrolment against a running auth API, which is what the lockstep note above is about.

@seamless-auth/react 0.11.0 to 0.12.0 in both React starters,
@seamless-auth/express 0.13.0 to 0.14.0, and @seamless-auth/fastify 0.4.0
to 0.5.0.

The three are one release: the WebAuthn register routes now read the access
session rather than the ephemeral token the auth API mints from an email
address alone. The API stopped accepting that token in 0.11.0 and there is
no safe order between the sides, so enrolment answers 401 until both land.

The starters needed the version and nothing else.
@Bccorb
Bccorb merged commit 69641fe into main Sep 8, 2026
3 checks passed
@Bccorb
Bccorb deleted the chore/enrolment-moves-behind-a-session branch September 8, 2026 22:37
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