v1.6.15

ruixenui/ruixen.comv1.6.15Jun 8, 2026by better-release[bot]

AI Summary

Fixed multiple bugs regarding session checks, user operations, and Kysely compatibility, while adding OAuth and passkey enhancements.

Key Highlights

  • Fixed session list enforcement and user operation error handling
  • Restored Kysely 0.28 and 0.29 compatibility
  • Added POST support to OAuth userinfo endpoint
  • Added automatic authenticator name resolution for passkeys

New Features

  • OAuth userinfo POST support
  • Passkey authenticator name resolution
  • Fixed Kysely migration constant import path

Full Release Notes

## `better-auth`

### Bug Fixes

- Fixed the `listSessions` endpoint to properly enforce fresh-age session checks ([#9865](https://github.com/better-auth/better-auth/pull/9865))
- Fixed `unbanUser`, `setRole`, and `adminUpdateUser` to return `USER_NOT_FOUND` instead of a generic 500 when the target user does not exist ([#9875](https://github.com/better-auth/better-auth/pull/9875))
- Fixed Kysely migration constant import path to restore Kysely 0.28 and 0.29 compatibility ([#9811](https://github.com/better-auth/better-auth/pull/9811))
- Improved cookie regex character ranges for more accurate cookie parsing ([#9879](https://github.com/better-auth/better-auth/pull/9879))

For detailed changes, see [`CHANGELOG`](https://github.com/better-auth/better-auth/blob/03e0e36a98a21eaf0ed39e384012f3216c954415/packages/better-auth/CHANGELOG.md)

## `@better-auth/oauth-provider`

### Features

- Added `POST` support to the `/oauth2/userinfo` endpoint, allowing the access token to be passed in the `Authorization` header ([#9937](https://github.com/better-auth/better-auth/pull/9937))

### Bug Fixes

- Fixed `hooks.before` and `hooks.after` to run correctly when OAuth authorization resumes after sign-in, account selection, or consent ([#9919](https://github.com/better-auth/better-auth/pull/9919))

For detailed changes, see [`CHANGELOG`](https://github.com/better-auth/better-auth/blob/03e0e36a98a21eaf0ed39e384012f3216c954415/packages/oauth-provider/CHANGELOG.md)

## `@better-auth/kysely-adapter`

### Bug Fixes

- Fixed Turbopack build failures by inlining migration table constants, also restoring compatibility with Kysely 0.28 and 0.29 ([#9933](https://github.com/better-auth/better-auth/pull/9933))

For detailed changes, see [`CHANGELOG`](https://github.com/better-auth/better-auth/blob/03e0e36a98a21eaf0ed39e384012f3216c954415/packages/kysely-adapter/CHANGELOG.md)

## `@better-auth/passkey`

### Features

- Added automatic resolution of authenticator names from AAGUID, exposing `getAuthenticatorName(aaguid)` and `commonAuthenticatorNames` so passkeys can display a friendly provider name like "1Password" or "Google Password Manager" ([#9927](https://github.com/better-auth/better-auth/pull/9927))

For detailed changes, see [`CHANGELOG`](https://github.com/better-auth/better-auth/blob/03e0e36a98a21eaf0ed39e384012f3216c954415/packages/passkey/CHANGELOG.md)

## `@better-auth/sso`

### Bug Fixes

- Fixed `ERR_SUBJECT_UNCONFIRMED` errors caused by `clockSkew` not being forwarded to samlify's `ServiceProvider` when validating SAML responses ([#9748](https://github.com/better-auth/better-auth/pull/9748))

For detailed changes, see [`CHANGELOG`](https://github.com/better-auth/better-auth/blob/03e0e36a98a21eaf0ed39e384012f3216c954415/packages/sso/CHANGELOG.md)

## Contributors

Thanks to everyone who contributed to this release:

@bytaesu, @gustavovalverde, @ping-maxwell, @seebykilian, @WilsonnnTan, @zeroknowledge0x

**Full changelog:** [`v1.6.14...v1.6.15`](https://github.com/better-auth/better-auth/compare/v1.6.14...v1.6.15)