Repository navigation
Version Packages - #204
Merged
Merged
Version Packages#204
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
October 8, 2026 13:38
816bcbf to
6b8c8a5
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 8, 2026 14:57
6b8c8a5 to
d1b02d7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@seamless-auth/core@0.20.0
Minor Changes
7f2e490: Serve auth API routes from the adapter manifest (feat(core): drive the proxy and cookie handling from the API adapter manifest #201).
The auth API publishes which token each route takes and which tokens its response issues or clears at
/.well-known/seamless-adapter.json. Every adapter now serves any route listed there that it has no handler of its own for, so a new API route works without a new release of these packages. Routes with their own handlers behave as before.POST /totp/verify-login),POST /registration/phoneand/registration/phone/verify,POST /admin/users/import, and anything the API adds later.@seamless-auth/nextjsreturns aPUThandler, so the OAuth provider retirement routes are reachable. Export it from the catch-all route:export const { GET, POST, PUT, PATCH, DELETE } = createSeamlessAuthHandler(...).tokenorrefreshTokento the browser in cookie transport.ensureCookiestakes optionalmethodandmanifest, and then loads the cookie the manifest names for the route.createAdapterManifestSource,matchManifestRoute,handleManifestRoute,parseAdapterManifest,buildManifestPathandADAPTER_MANIFEST_PATH.Each adapter fetches the manifest from the auth API on its first request, waiting up to five seconds, and keeps it for the life of the process. If the API does not serve one (versions before the manifest), it uses the copy bundled with the package and tries again a minute later. Tests that mock
fetchwill see this extra request; passfetchManifest: falseto use only the bundled copy.Patch Changes
a16f216: Accept only a session cookie in
requireAuthand the Next.js session helpers.Every adapter cookie is signed with the same secret, including the pre-auth cookie
POST /loginissues for any existing account from its email address alone, and the registration cookie.authenticateCookiechecked only the signature andsub, so one of those cookies presented under the access cookie name passedrequireAuth(Express and Fastify) andgetSeamlessSession,getSeamlessClaimsandhasSeamlessSession(Next.js) as that account, without a factor being proven. A refresh cookie passed the same way. Routes the adapter proxies to the auth API were not affected, because the API checks the token's type itself.authenticateCookienow also requires the cookie to carry an auth API access token (typ: "access"). Session cookies issued by earlier versions already carry one, so signed-in users are not signed out. Upgrade if any of your own routes rely on these guards.5274afe: Keep ephemeral tokens out of cookie-transport response bodies (fix(core): cookie transport returns ephemeral tokens in response bodies #202).
The OTP send routes (
POST /otp/generate-email-otp,/otp/generate-phone-otp,/otp/generate-login-email-otp,/otp/generate-login-phone-otp) returned the ephemeral token the auth API re-mints on every send, andPOST /registration/registerreturned the registration token it had just stored in the cookie. Page scripts could read both, which the httpOnly cookie exists to prevent. Under cookie transport these bodies no longer carrytokenorrefreshToken. Bearer transport is unchanged, because the client holds its own tokens there.requestOtpHandlertakes an optionaltransport. Without it the token is dropped, so a caller serving bearer clients through this handler directly should passtransport: "bearer".330c0fc: Accept the session cookie on application routes outside the Fastify plugin (fix(fastify): requireAuth cannot read the session cookie on routes outside the plugin #207).
The Fastify plugin registers
@fastify/cookieinside its own encapsulated scope, so a route the application registers elsewhere had norequest.cookies.requireAuthanswered 401 to every cookie session there, although the README presents it for exactly those routes, andgetSeamlessUserfound no session either. Both now read theCookieheader themselves when no cookie plugin parsed it.getSeamlessUserin core also sends the access token from the verified cookie when the caller supplies noauthorization. Before, a cookie session read outside the adapter's own routes, with no guard in front to load the cookie payload, reached the auth API with no token. This applies to the Express adapter as well.d285ffb: Refresh the bundled adapter manifest.
POST /registration/registerandPOST /registration/phoneare now marked as delivery routes, so withmessagingconfigured an adapter serving them from the bundled manifest sends the message itself instead of leaving it to the auth API.@seamless-auth/express@0.20.0
Minor Changes
7f2e490: Serve auth API routes from the adapter manifest (feat(core): drive the proxy and cookie handling from the API adapter manifest #201).
The auth API publishes which token each route takes and which tokens its response issues or clears at
/.well-known/seamless-adapter.json. Every adapter now serves any route listed there that it has no handler of its own for, so a new API route works without a new release of these packages. Routes with their own handlers behave as before.POST /totp/verify-login),POST /registration/phoneand/registration/phone/verify,POST /admin/users/import, and anything the API adds later.@seamless-auth/nextjsreturns aPUThandler, so the OAuth provider retirement routes are reachable. Export it from the catch-all route:export const { GET, POST, PUT, PATCH, DELETE } = createSeamlessAuthHandler(...).tokenorrefreshTokento the browser in cookie transport.ensureCookiestakes optionalmethodandmanifest, and then loads the cookie the manifest names for the route.createAdapterManifestSource,matchManifestRoute,handleManifestRoute,parseAdapterManifest,buildManifestPathandADAPTER_MANIFEST_PATH.Each adapter fetches the manifest from the auth API on its first request, waiting up to five seconds, and keeps it for the life of the process. If the API does not serve one (versions before the manifest), it uses the copy bundled with the package and tries again a minute later. Tests that mock
fetchwill see this extra request; passfetchManifest: falseto use only the bundled copy.Patch Changes
a16f216: Accept only a session cookie in
requireAuthand the Next.js session helpers.Every adapter cookie is signed with the same secret, including the pre-auth cookie
POST /loginissues for any existing account from its email address alone, and the registration cookie.authenticateCookiechecked only the signature andsub, so one of those cookies presented under the access cookie name passedrequireAuth(Express and Fastify) andgetSeamlessSession,getSeamlessClaimsandhasSeamlessSession(Next.js) as that account, without a factor being proven. A refresh cookie passed the same way. Routes the adapter proxies to the auth API were not affected, because the API checks the token's type itself.authenticateCookienow also requires the cookie to carry an auth API access token (typ: "access"). Session cookies issued by earlier versions already carry one, so signed-in users are not signed out. Upgrade if any of your own routes rely on these guards.5274afe: Keep ephemeral tokens out of cookie-transport response bodies (fix(core): cookie transport returns ephemeral tokens in response bodies #202).
The OTP send routes (
POST /otp/generate-email-otp,/otp/generate-phone-otp,/otp/generate-login-email-otp,/otp/generate-login-phone-otp) returned the ephemeral token the auth API re-mints on every send, andPOST /registration/registerreturned the registration token it had just stored in the cookie. Page scripts could read both, which the httpOnly cookie exists to prevent. Under cookie transport these bodies no longer carrytokenorrefreshToken. Bearer transport is unchanged, because the client holds its own tokens there.requestOtpHandlertakes an optionaltransport. Without it the token is dropped, so a caller serving bearer clients through this handler directly should passtransport: "bearer".330c0fc: Accept the session cookie on application routes outside the Fastify plugin (fix(fastify): requireAuth cannot read the session cookie on routes outside the plugin #207).
The Fastify plugin registers
@fastify/cookieinside its own encapsulated scope, so a route the application registers elsewhere had norequest.cookies.requireAuthanswered 401 to every cookie session there, although the README presents it for exactly those routes, andgetSeamlessUserfound no session either. Both now read theCookieheader themselves when no cookie plugin parsed it.getSeamlessUserin core also sends the access token from the verified cookie when the caller supplies noauthorization. Before, a cookie session read outside the adapter's own routes, with no guard in front to load the cookie payload, reached the auth API with no token. This applies to the Express adapter as well.Updated dependencies [7f2e490]
Updated dependencies [a16f216]
Updated dependencies [5274afe]
Updated dependencies [330c0fc]
Updated dependencies [d285ffb]
@seamless-auth/fastify@0.11.0
Minor Changes
7f2e490: Serve auth API routes from the adapter manifest (feat(core): drive the proxy and cookie handling from the API adapter manifest #201).
The auth API publishes which token each route takes and which tokens its response issues or clears at
/.well-known/seamless-adapter.json. Every adapter now serves any route listed there that it has no handler of its own for, so a new API route works without a new release of these packages. Routes with their own handlers behave as before.POST /totp/verify-login),POST /registration/phoneand/registration/phone/verify,POST /admin/users/import, and anything the API adds later.@seamless-auth/nextjsreturns aPUThandler, so the OAuth provider retirement routes are reachable. Export it from the catch-all route:export const { GET, POST, PUT, PATCH, DELETE } = createSeamlessAuthHandler(...).tokenorrefreshTokento the browser in cookie transport.ensureCookiestakes optionalmethodandmanifest, and then loads the cookie the manifest names for the route.createAdapterManifestSource,matchManifestRoute,handleManifestRoute,parseAdapterManifest,buildManifestPathandADAPTER_MANIFEST_PATH.Each adapter fetches the manifest from the auth API on its first request, waiting up to five seconds, and keeps it for the life of the process. If the API does not serve one (versions before the manifest), it uses the copy bundled with the package and tries again a minute later. Tests that mock
fetchwill see this extra request; passfetchManifest: falseto use only the bundled copy.Patch Changes
a16f216: Accept only a session cookie in
requireAuthand the Next.js session helpers.Every adapter cookie is signed with the same secret, including the pre-auth cookie
POST /loginissues for any existing account from its email address alone, and the registration cookie.authenticateCookiechecked only the signature andsub, so one of those cookies presented under the access cookie name passedrequireAuth(Express and Fastify) andgetSeamlessSession,getSeamlessClaimsandhasSeamlessSession(Next.js) as that account, without a factor being proven. A refresh cookie passed the same way. Routes the adapter proxies to the auth API were not affected, because the API checks the token's type itself.authenticateCookienow also requires the cookie to carry an auth API access token (typ: "access"). Session cookies issued by earlier versions already carry one, so signed-in users are not signed out. Upgrade if any of your own routes rely on these guards.5274afe: Keep ephemeral tokens out of cookie-transport response bodies (fix(core): cookie transport returns ephemeral tokens in response bodies #202).
The OTP send routes (
POST /otp/generate-email-otp,/otp/generate-phone-otp,/otp/generate-login-email-otp,/otp/generate-login-phone-otp) returned the ephemeral token the auth API re-mints on every send, andPOST /registration/registerreturned the registration token it had just stored in the cookie. Page scripts could read both, which the httpOnly cookie exists to prevent. Under cookie transport these bodies no longer carrytokenorrefreshToken. Bearer transport is unchanged, because the client holds its own tokens there.requestOtpHandlertakes an optionaltransport. Without it the token is dropped, so a caller serving bearer clients through this handler directly should passtransport: "bearer".330c0fc: Accept the session cookie on application routes outside the Fastify plugin (fix(fastify): requireAuth cannot read the session cookie on routes outside the plugin #207).
The Fastify plugin registers
@fastify/cookieinside its own encapsulated scope, so a route the application registers elsewhere had norequest.cookies.requireAuthanswered 401 to every cookie session there, although the README presents it for exactly those routes, andgetSeamlessUserfound no session either. Both now read theCookieheader themselves when no cookie plugin parsed it.getSeamlessUserin core also sends the access token from the verified cookie when the caller supplies noauthorization. Before, a cookie session read outside the adapter's own routes, with no guard in front to load the cookie payload, reached the auth API with no token. This applies to the Express adapter as well.Updated dependencies [7f2e490]
Updated dependencies [a16f216]
Updated dependencies [5274afe]
Updated dependencies [330c0fc]
Updated dependencies [d285ffb]
@seamless-auth/nextjs@0.4.0
Minor Changes
7f2e490: Serve auth API routes from the adapter manifest (feat(core): drive the proxy and cookie handling from the API adapter manifest #201).
The auth API publishes which token each route takes and which tokens its response issues or clears at
/.well-known/seamless-adapter.json. Every adapter now serves any route listed there that it has no handler of its own for, so a new API route works without a new release of these packages. Routes with their own handlers behave as before.POST /totp/verify-login),POST /registration/phoneand/registration/phone/verify,POST /admin/users/import, and anything the API adds later.@seamless-auth/nextjsreturns aPUThandler, so the OAuth provider retirement routes are reachable. Export it from the catch-all route:export const { GET, POST, PUT, PATCH, DELETE } = createSeamlessAuthHandler(...).tokenorrefreshTokento the browser in cookie transport.ensureCookiestakes optionalmethodandmanifest, and then loads the cookie the manifest names for the route.createAdapterManifestSource,matchManifestRoute,handleManifestRoute,parseAdapterManifest,buildManifestPathandADAPTER_MANIFEST_PATH.Each adapter fetches the manifest from the auth API on its first request, waiting up to five seconds, and keeps it for the life of the process. If the API does not serve one (versions before the manifest), it uses the copy bundled with the package and tries again a minute later. Tests that mock
fetchwill see this extra request; passfetchManifest: falseto use only the bundled copy.Patch Changes
a16f216: Accept only a session cookie in
requireAuthand the Next.js session helpers.Every adapter cookie is signed with the same secret, including the pre-auth cookie
POST /loginissues for any existing account from its email address alone, and the registration cookie.authenticateCookiechecked only the signature andsub, so one of those cookies presented under the access cookie name passedrequireAuth(Express and Fastify) andgetSeamlessSession,getSeamlessClaimsandhasSeamlessSession(Next.js) as that account, without a factor being proven. A refresh cookie passed the same way. Routes the adapter proxies to the auth API were not affected, because the API checks the token's type itself.authenticateCookienow also requires the cookie to carry an auth API access token (typ: "access"). Session cookies issued by earlier versions already carry one, so signed-in users are not signed out. Upgrade if any of your own routes rely on these guards.5274afe: Keep ephemeral tokens out of cookie-transport response bodies (fix(core): cookie transport returns ephemeral tokens in response bodies #202).
The OTP send routes (
POST /otp/generate-email-otp,/otp/generate-phone-otp,/otp/generate-login-email-otp,/otp/generate-login-phone-otp) returned the ephemeral token the auth API re-mints on every send, andPOST /registration/registerreturned the registration token it had just stored in the cookie. Page scripts could read both, which the httpOnly cookie exists to prevent. Under cookie transport these bodies no longer carrytokenorrefreshToken. Bearer transport is unchanged, because the client holds its own tokens there.requestOtpHandlertakes an optionaltransport. Without it the token is dropped, so a caller serving bearer clients through this handler directly should passtransport: "bearer".Updated dependencies [7f2e490]
Updated dependencies [a16f216]
Updated dependencies [5274afe]
Updated dependencies [330c0fc]
Updated dependencies [d285ffb]