* chore: consistent package names
* chore: init changesets
* chore: update contribution doc to include generating a changeset
* chore: configure all better auth packages to always have the same version number
* chore: update nextjs demo package name
* chore(changesets): ignore all private packages
* chore(changesets): check for changesets in CI
* chore(changesets): install chagesets cli
* chore(changesets): use orgin as main
* chore(changesets): fix typo
* chore(changesets): check for changes since main in ci
* chore(changesets): check for changes since main in ci with the correct command
* chore(changesets): check against `origin/main`
* chore(changesets): checking for changesets should be the last action
* chore(changesets): run changelog check after stoping the docker containers
* chore(changesets): run changelog check after building
* chore(changesets): run changelog check after starting docker compose
* chore(changesets): run changelog check after linting
* chore(changesets): run changelog check after testing
* Revert "chore(changesets): run changelog check after testing"
This reverts commit 6dc000f78d.
* chore: export siwe in better-auth/plugins (#3596)
The docs were using this import path, yet `siwe` wasn't exported there. This PR fixes this.
* chore: fix cookies test
* docs: make client-side vs. server-side explicit (#3603)
* docs: fix broken link to ERC-4361 in siwe docs (#3604)
* fix(jwt): ensure alg is added to the jwks when generating via /token endpoint (#3601)
* fix: Ensure alg is added to the jwks when generating via /token endpoint
* chore: resolve linting issues
* chore(example): fix SvelteKit example (#1742)
* refactor: upgrade Svelte, Vite and related packages
* refactor: replace no longer supported `body.callbackURL` with `onSuccess`
* fix: add missing `svelte-kit sync` on `prepare`
* fix: add missing `import`s
* chore(svelte-kit-example): show message & redirect to index after sign up
* chore: add npm script to migrate database
* doc: add more commands to set up
* chore: explicitly disable verification email on sign up
The example does not work if you set `sendOnSignUp: true` without setting up the email server.
* refactor(svelte-kit-example): add type for hooks
* chore(svelte-kit-example): redirect to sign in page if users open dashboard without log in
* chore: diable some rules for svelte-kit-example due to Biome's limited Svelte support
* style: fix format
* chore: update pnpm-lock.yaml
* chore: fix lock file
---------
Co-authored-by: Bereket Engida <Bekacru@gmail.com>
* fix: make sveltekit plugin ALS-agnostic (#3533)
* svelte cookie
* udpate
* update
* update
* update
* chore(cli): update zod to v4 (#3618)
* fix: correct typo in freeTrial variable name in Stripe integration
* chore: fix lock file
* chore: add changeset for typo fix in freeTrial
---------
Co-authored-by: Maxwell <145994855+ping-maxwell@users.noreply.github.com>
Co-authored-by: Bereket Engida <Bekacru@gmail.com>
Co-authored-by: Justin <127172022+jl33-ai@users.noreply.github.com>
Co-authored-by: Elliott Minns <elliott.minns@pm.me>
Co-authored-by: Jumpei Ogawa <git@phanective.org>
Co-authored-by: KinfeMichael Tariku <65047246+Kinfe123@users.noreply.github.com>
* update(org): additional fields improvements
Fix: type error in client plugin auth generic
update: improved change-logs blog
* fix: teams still inferred
* update: changelog
* feat: first draft of SIWE plugin
* fix: run biome linter
* refactor(siwe): rename publicKey to walletAddress for clarity
- Add ensName as an optional param from the client
- Add emailDomainName to plugin options - fallback to getOrigin()
- Move schema to a separate file
* fix(siwe): update emailDomainName assignment to use nullish coalescing operator
* run biome linter
* fix(siwe): avatar field is not included in createUser call
* refactor(siwe): remove siwe dependency and implement nonce generation and message verification through plugin options
- Removed direct dependency on 'siwe' package.
- Introduced 'generateSiweNonce' and 'verifySiweMessage' as user functions
- Updated tests to reflect changes in nonce handling and message verification logic (WIP)
* feat: add anonymous flag to plugin options
* refactor(siwe): improve test coverage - anonymous flag, missing nonce & other edge cases
* feat(siwe): add checksum address validation using keccak256 + test case
* fix(siwe): refactor hashing utility to use @noble/hashes
* feat(siwe): enhance SIWE plugin with chainId support, strong typing, dedicated table for wallet adresses and more test coverage
* refactor(siwe): remove unused SIWE interfaces
* fix(siwe): PR review issues
* fix(siwe): rename const "siweClientPlugin" to "siweClient" for simplicity
* feat(siwe): add docs
* chore: fix lock file
* fix: account linking & code formatting
* run pnpm lint
---------
Co-authored-by: Bereket Engida <Bekacru@gmail.com>
* refactor: Pass both building and getRequestEvent from outside of library
- Removes the need for importing from virtual modules at the expense of more user boilerplate
* chore: add Svelte and related dependencies to externals
* chore: lint
* refactor(docs): update SvelteKit integration docs with new building and getRequestEvent usage
* feat: add an option to encrypt tokens by default
* feat(auth): add OAuth token encryption support
* refactor(auth): streamline token handling in OAuth callback by utilizing setTokenUtil
* refactor(auth): replace direct token handling with setTokenUtil for improved clarity and maintainability
* refactor(auth): unify token handling by utilizing setTokenUtil for access and refresh tokens
* docs(auth): enhance documentation for OAuth token encryption, clarifying security risks and benefits
* chore: cleanup
* update test
* feat: add LLM copy button and view options components
- update routing for LLM text generation, adding .mdx to a route now generates its .md repsresentation
- add rewrite from /docs/:path*mdx to /llms.txt/:path so ai can traverse the llms.txt as routes
* chore: lint
* chore: cubic
* feat(mcp): add support for public clients with PKCE authentication
- Add conditional client authentication based on client type
- Support public clients using PKCE without client_secret requirement
- Add "none" to supported token endpoint authentication methods
- Make clientSecret optional in database schema for public clients
- Update client registration to handle public clients automatically
- Maintain backward compatibility with confidential clients
Fixes authentication issues with Claude.ai and other public OAuth clients
that use PKCE (Proof Key for Code Exchange) without client secrets.
Resolves#2813
* style: format code with prettier and fix trailing commas
* fix: resolve TypeScript errors in MCP plugin and tests
- Fix missing loginPage in oidcConfig for MCP tests
- Add type assertions for unknown response data types
- Handle optional clientSecret with null coalescing operators
- Update OIDC provider to support "none" auth method in metadata
- Fix type compatibility issues between public and confidential clients
* fix: resolve TypeScript, Vitest, and CI compatibility issues
- Fix missing loginPage in oidcConfig for MCP tests
- Add type assertions for unknown response data types
- Handle optional clientSecret with null coalescing operators
- Update OIDC provider to support "none" auth method in metadata
- Fix async describe callback to use synchronous setup with beforeAll
- Use ephemeral port allocation to prevent CI port conflicts
- Add explicit type annotations to avoid implicit any errors
* OpenAPI Schema Contract Fixed
* fix: resolve lint
* fix: ensure OAuth 2.0 spec compliance for public client registration
- Fix public client registration to omit client_secret field entirely
- Public clients now receive no client_secret property (was empty string)
- Maintains backward compatibility with confidential clients
- Addresses OAuth 2.0 Dynamic Client Registration (RFC 7591) requirements
* update docs
* remove any
* dont return secret on public client oidc
* remove any
* conditionally verify client secret
* update test
---------
Co-authored-by: Bereket Engida <Bekacru@gmail.com>