Skip to content

chore: bump to auth API v0.12.0, dashboard v0.6.0, templates v0.13.0 - #200

Merged
Bccorb merged 2 commits into
mainfrom
chore/ecosystem-bump-api-v0.12.0
Sep 8, 2026
Merged

chore: bump to auth API v0.12.0, dashboard v0.6.0, templates v0.13.0#200
Bccorb merged 2 commits into
mainfrom
chore/ecosystem-bump-api-v0.12.0

Conversation

@Bccorb

@Bccorb Bccorb commented Sep 8, 2026

Copy link
Copy Markdown
Contributor
Pin Was Now
SEAMLESS_AUTH_API_VERSION v0.10.0 v0.12.0
SEAMLESS_AUTH_ADMIN_DASHBOARD_VERSION v0.5.0 v0.6.0
SEAMLESS_TEMPLATES_REF v0.12.0 v0.13.0
@seamless-auth/express (verify adapter) ^0.13.0 ^0.14.0
@seamless-auth/fastify (verify adapter) ^0.4.0 ^0.5.0

The enrollment change, and why everything moves at once

API v0.11.0 puts passkey enrollment behind an access session. /webAuthn/register/start and /webAuthn/register/finish used to accept the ephemeral token the API mints from an email address alone, so anyone who knew an address could enroll a credential against that account and sign in as its owner. Both routes read the access session now, and enrollment no longer issues a session of its own.

There is no safe release order between the API and the adapter — an older adapter sends what the new API refuses, and a newer adapter sends what an older API refuses, so enrollment answers 401 until both land. This branch therefore moves every side together:

  • the API image to v0.12.0,
  • the starters via templates v0.13.0, which carries @seamless-auth/react 0.12.0, @seamless-auth/express 0.14.0 and @seamless-auth/fastify 0.5.0,
  • the conformance harness's own adapters to the same ^0.14.0 / ^0.5.0.

No shipped flow loses a step: registration proves an address with an email OTP, and verifying it issues the session before the passkey screen appears.

An earlier revision of this PR held SEAMLESS_TEMPLATES_REF at v0.12.0 and documented a fresh scaffold answering 401 at enrollment, because templates had not yet published the matching adapters. Templates v0.13.0 published while this was open and closes that gap; the caveat is gone from the changeset and the second commit is that ref bump.

Auth API

v0.11.0 also declares and validates the window on GET /admin/userslimit 1–100, offset from 0, search trimmed — so it appears in openapi.json alongside the other admin collections, and adds DELETE /admin/organizations/:organizationId with a paged, searchable organization list. The CLI side of that window landed separately in #199.

v0.12.0 ships dashboard v0.6.0 inside the API image.

.env.example is byte-identical between v0.10.0 and v0.12.0, so no new scaffold environment keys arrive with this.

Admin dashboard

v0.6.0 pages and searches organizations on the server rather than filtering loaded rows in memory, gains a Remove action behind step-up, takes a date range on Overview and Security, and grows an Authenticator Policy section. Bumping the constant keeps the standalone console (--admin=image, --admin=source) on the release the API image now serves at /console.

Adapters

Beyond forwarding the access session, express 0.14.0 / fastify 0.5.0 proxy the organization delete, and forward the query string on GET /admin/users and GET /internal/auth-events/login-stats — both were built without one, so the dashboard's user search and its login statistics range were silently answered with the API's defaults.

Verification

  • Confirmed the v0.12.0 image actually exists on GHCR before pinning: it was still building when this work started (manifest 404), and the pin was applied only after its Publish versioned image job finished and the manifest returned 200. Dashboard v0.6.0 returns 200 too.
  • registry.json fetches 200 at templates v0.13.0, and every template.json plus the registry is byte-identical to v0.12.0, so nothing in init moves with the ref.
  • npm view resolves ^0.14.0 / ^0.5.0 to 0.14.0 and 0.5.0.
  • Ran the docker generator against the real .env.example at v0.12.0 — keys reach the generated compose correctly escaped.
  • npm run build passes; 1001 tests pass, 4 skipped.
  • Not covered here: seamless verify needs Docker and sibling checkouts, so the released-mode conformance run against API v0.12.0 and the 0.14.0 / 0.5.0 adapters is CI's verify-conformance job on this PR.

v0.11.0 puts passkey enrollment behind an access session, a breaking wire
contract change: the API refuses the pre-auth token enrollment used to
accept, so an ephemeral token can no longer enroll a credential against an
account and then sign in as its owner. It also declares and validates the
window on GET /admin/users, and adds organization deletion with a paged,
searchable admin organization list. v0.12.0 ships dashboard v0.6.0 in the
API image, so the dashboard pin moves with it and the standalone console
serves the same release the image serves at /console.

The conformance adapters move to @seamless-auth/express ^0.14.0 and
@seamless-auth/fastify ^0.5.0, the other half of the enrollment change:
they forward the access session the API now requires. They also proxy the
organization delete, and forward the query string on GET /admin/users and
GET /internal/auth-events/login-stats, which both dropped it.

SEAMLESS_TEMPLATES_REF stays at v0.12.0. Its API starters pin the adapters
from before the enrollment change and a caret on a 0.x version cannot
reach 0.14.0 or 0.5.0, so a project scaffolded against this release runs a
new API behind an old adapter and passkey enrollment answers 401 until
templates publishes with the new pins and the ref follows. Email OTP and
magic link sign-in are unaffected. The harness pins its own adapters, so
it exercises the matched pair and will not show this.
Templates v0.13.0 published after the previous commit and carries the
matched half of the enrollment change: @seamless-auth/react 0.12.0,
@seamless-auth/express 0.14.0 and @seamless-auth/fastify 0.5.0 in the
starters. Its own notes say to point a scaffolded project at
seamless-auth-api 0.12.0, which is what this branch pins.

That closes the gap the previous commit documented. A scaffold no longer
runs a new API behind an adapter from before the contract change, so
passkey enrollment works out of the box and the changeset drops the
caveat.

The manifest contract and the registry are byte-identical to v0.12.0, so
nothing in init moves with the ref.
@Bccorb Bccorb changed the title chore: bump to auth API v0.12.0 and dashboard v0.6.0 chore: bump to auth API v0.12.0, dashboard v0.6.0, templates v0.13.0 Sep 8, 2026
@Bccorb
Bccorb merged commit 0a68c15 into main Sep 8, 2026
3 checks passed
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