Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1032 commits
Select commit Hold shift + click to select a range
cbd8613
fix(db): handle camelCase postgres metadata keys in migration schema …
bytaesu Feb 22, 2026
664c1d7
fix(security): prevent OTP reuse via race condition (#8067)
Oluwatobi-Mustapha Feb 22, 2026
e802eae
fix(stripe): use CHECKOUT_SESSION_ID for success_url and remove cance…
bytaesu Feb 22, 2026
7565c75
fix: force drizzle-adapter to return dates correctly (#8104)
ping-maxwell Feb 23, 2026
f2124a8
feat: add `/update-session` (#8084)
himself65 Feb 23, 2026
0ce6c7e
chore: release v1.5.0-beta.17
himself65 Feb 23, 2026
2e1c177
fix: drizzle transform input crashes dates (#8105)
ping-maxwell Feb 23, 2026
714e543
chore: release v1.5.0-beta.18
himself65 Feb 23, 2026
1129a30
fix: use invalid_grant instead of invalid_request for refresh token e…
luchersou Feb 23, 2026
151362b
fix(swie): remove max chainId validation (#8123)
orshih6 Feb 24, 2026
ad3fc4c
feat(api-key): Organization support in API-Keys & Multiple config sup…
ping-maxwell Feb 24, 2026
5fc0936
fix(expo): `expo-web-browser` is not installed as a dependency (#7752)
AdiMarianMutu Feb 24, 2026
9c65287
chore: bump version (#8128)
himself65 Feb 24, 2026
bbe4fe3
chore(electron): improve build config (#8126)
jslno Feb 24, 2026
f48c66e
fix(multi-session): allow setActive with multi-session cookies only (…
Oluwatobi-Mustapha Feb 24, 2026
66446bf
chore: align package.json fields and add missing README.md files (#8131)
himself65 Feb 24, 2026
1710d67
chore: bump pnpm (#8130)
himself65 Feb 24, 2026
a187e02
fix(captcha): add `$ERROR_CODES` (#8136)
marcellosso Feb 25, 2026
087dc6e
chore: use node 24 as default version (#8129)
himself65 Feb 25, 2026
c9ccdda
ci: add cla.yml (#8137)
himself65 Feb 25, 2026
953acce
docs: fix description code example mismatch (#8132)
bytaesu Feb 25, 2026
f3f8261
docs: add better-auth-razorpay and better-auth-payu to community plug…
iamjasonkendrick Feb 25, 2026
f83118f
docs(convex-integration): clarify instructions for generating the sch…
Abdssamie Feb 25, 2026
ffdf7f1
docs: correct video link (#8142)
lgarest Feb 25, 2026
93a035c
test: fix flaky test (#8149)
himself65 Feb 25, 2026
ddbbd0b
chore: temp delete cla workflow (#8153)
ping-maxwell Feb 25, 2026
0ce2316
fix(electron): redirect in oauth init proxy (#8143)
jslno Feb 25, 2026
554f0ef
chore: release v1.5.0-beta.19
Bekacru Feb 26, 2026
84565cc
fix: remove max validation on siwe verify endpoint (#8158)
orshih6 Feb 26, 2026
e8a8472
fix(docs): redirect legacy `/docs/errors` routes to `/docs/reference/…
bytaesu Feb 26, 2026
f77c391
chore: bump prisma to v7 (#8166)
himself65 Feb 27, 2026
fd964c2
chore(deps): bump fast-xml-parser from 5.3.6 to 5.3.8 (#8180)
dependabot[bot] Feb 27, 2026
c45edd6
fix(client): broadcast session updates to other tabs on sign-out and …
Abhinav-kodes Feb 27, 2026
f7a65b1
fix(api): respect freshAge in deleteUser (#8174)
bytaesu Feb 27, 2026
f90a59a
fix(nextjs): use explicit .js extension in next/headers imports (#8178)
Jordanburch101 Feb 27, 2026
6beb0a1
fix(cookies): export `getAccountCookie` from `better-auth/cookies` (#…
bytaesu Feb 27, 2026
85546dd
docs: add 'better-auth-audit-logs' plugin to community table (#8182)
himself65 Feb 27, 2026
00dfa4f
fix: dynamic base url auth context should contain all properties of c…
Engerim Feb 27, 2026
8048a1d
chore: upgrade dependencies (#8183)
himself65 Feb 27, 2026
1d7f436
fix(adapter): map camelCase keys during checkMissingFields in Drizzle…
jonathan-teamstatus Feb 27, 2026
89e3a8a
docs(electron): add image proxy callout for admin plugin (#8171)
jslno Feb 27, 2026
49931f0
fix(two-factor): handle undefined options verifyTwoFactor (#8162)
okisdev Feb 27, 2026
2fd1ef3
chore: release v1.5.0-beta.20
himself65 Feb 27, 2026
7ccf9cf
fix(next-cookies): leaks unnecessary cookie (#8193)
ping-maxwell Feb 27, 2026
c41d11e
fix(oauth-provider)!: Keep auth_time across id_token refresh (#8134)
grant0417 Feb 28, 2026
5bc743b
docs: new documentation/landing page (#8195)
ping-maxwell Feb 28, 2026
3e6f6fe
chore: fix new landing missing dep (#8196)
ping-maxwell Feb 28, 2026
37608ec
feat: add built-in support for D1Database (#7519)
bytaesu Feb 28, 2026
fa09b4e
chore: increase community page icon size (#8198)
ping-maxwell Feb 28, 2026
cde159a
chore: fix deps (#8201)
himself65 Feb 28, 2026
cf1c11b
chore(landing): remove project limits (#8199)
jslno Feb 28, 2026
3b458f7
docs: fix home-page svg paths (#8200)
ping-maxwell Feb 28, 2026
0b576cc
chore(landing): update community page (#8202)
jslno Feb 28, 2026
9b86101
docs: add 1.5 release note (#8197)
himself65 Feb 28, 2026
a9cb341
chore: use pnpm script
himself65 Feb 28, 2026
782a8e6
docs: fix release date
himself65 Feb 28, 2026
00b543a
feat(cli): add `upgrade` command to update better-auth packages (#8204)
himself65 Feb 28, 2026
cd4d1c6
test(scim): split scim.test.ts to fix CI flaky timeout (#8208)
himself65 Feb 28, 2026
0a1ef17
fix(stripe): increase test timeout to fix CI flaky failures (#8209)
himself65 Feb 28, 2026
2bd462c
fix(ci): increase test timeout for sso, api-key, oauth-provider and a…
himself65 Feb 28, 2026
95d30dd
chore(landing): fix hero button (#8203)
jslno Feb 28, 2026
d3f3e63
fix: persist refreshed idToken in getAccessToken (#8211)
GautamBytes Feb 28, 2026
451376d
ci: use per-job concurrency groups to support test matrix (#8215)
himself65 Feb 28, 2026
3b502f2
fix(expo): support Expo SDK 55 new versioning scheme (#8213)
himself65 Feb 28, 2026
3bee55f
fix(docs): correct link formatting in blog post 1-5.mdx
Bekacru Feb 28, 2026
0deaaa4
fix(oauth-proxy): add generic OAuth support to proxy (#8082)
Diabl0570 Feb 28, 2026
4f1326e
refactor(admin): allow flexible admin impersonation (#8045)
jslno Feb 28, 2026
9c94ddc
docs: update blog post 1-5 with OAuth 2.1 Provider and self-service S…
Bekacru Feb 28, 2026
12a3caf
docs: fix blogs nav ui (#8205)
ping-maxwell Feb 28, 2026
f3c33e5
fix(core): avoid throwing on required session fields when collecting …
AlexStrNik Feb 28, 2026
8ce5de9
refactor(blog): update import paths for TOC components in blog page
Bekacru Feb 28, 2026
293c6b6
fix(sso): ensure consistent OIDC discovery across APIs (#8118)
hlhc Feb 28, 2026
c9f6ea9
fix: prevent email enumeration on /change-email, add customSyntheticU…
nphlp Feb 28, 2026
0648e07
chore: update chanlog for customSyntheticUser
Bekacru Feb 28, 2026
fbdc049
fix(bearer): support case-insensitive scheme and handle token URL enc…
bytaesu Feb 28, 2026
2f46817
fix(last-login-method): tracks magic-link auth by default (#8135)
simonfelding Feb 28, 2026
8c94b23
fix(expo): use default scheme for callbackURL and document native nav…
bytaesu Feb 28, 2026
1dc9627
fix(drizzle-adapter): resolve db.query key mismatch when config.schem…
typedrat Feb 28, 2026
ad1ec91
fix(organization): merge DB permissions with built-in roles in dynami…
bytaesu Feb 28, 2026
af9e010
fix: updateAge should extend session_token cookie on stateless mode (…
himself65 Feb 28, 2026
81d83bb
fix: preserve refresh token when provider omits it on refresh (#8001)
async3619 Feb 28, 2026
3fc0dd7
fix(organization): update path matching for active member signals (#7…
LovelessCodes Feb 28, 2026
33094f0
Revert "fix(oauth-proxy): add generic OAuth support to proxy (#8082)"
Bekacru Feb 28, 2026
e2e560c
fix: session listing endpoints returning empty arrays when >100 inact…
ping-maxwell Feb 28, 2026
07b8390
feat: support non-destructive key rotation for BETTER_AUTH_SECRET (#7…
jzila Feb 28, 2026
3485e5e
feat(cli): generate schema from adapter CLI flag (#7316)
ping-maxwell Feb 28, 2026
a63d31e
fix(last-login-method): correctly handle multiple Set-Cookie headers …
dngpng Feb 28, 2026
55100bf
fix(kysely): edge case aliased joined table names (#7171)
ping-maxwell Feb 28, 2026
fae4251
docs: fix home page color contrast (#8206)
ping-maxwell Feb 28, 2026
7115286
docs(fastify): add session retrieval section (#7258)
nathannewyen Feb 28, 2026
fefbde2
fix(expo): skip cookie/expo-origin headers for ID token requests (#7069)
kimchi-developer Feb 28, 2026
4eec4df
feat(email-otp): add change email flow with OTP (#7968)
cdy-peters Feb 28, 2026
63d7e78
chore: fix build
Bekacru Feb 28, 2026
859367a
chore: lint
Bekacru Feb 28, 2026
d727caf
feat(client): add fallback support for VERCEL_URL and NEXTAUTH_URL (#…
GautamBytes Mar 1, 2026
2295364
chore: include new commits content on 1.5 release notes
Bekacru Mar 1, 2026
2f592e8
chore: update blog image for 1.5 release and remove company page comp…
Bekacru Mar 1, 2026
545a73d
ci: continue on error
himself65 Mar 1, 2026
0ff021d
chore: release v1.5.0
himself65 Mar 1, 2026
d567e1d
feat(blog): add draft support for blog posts and update image URLs
Bekacru Mar 1, 2026
cdcdc3d
chore(blog): update image URLs to use absolute paths for consistency
Bekacru Mar 1, 2026
5224a3f
chore: remove draft
Bekacru Mar 1, 2026
c14c404
fix: update sign-in link to use absolute URL for better accessibility
Bekacru Mar 1, 2026
d760222
docs(expo): update Metro config for Expo SDK 53+ (#8220)
himself65 Mar 1, 2026
7c8bece
docs: fix release og path
himself65 Mar 1, 2026
848e5f8
refactor: replace Link components with anchor tags for sign-in links
Bekacru Mar 1, 2026
fd37e60
chore: improve readme description
Bekacru Mar 1, 2026
1906ebf
docs: improve contrsat
Bekacru Mar 1, 2026
429778d
docs: fix release image
himself65 Mar 1, 2026
ff7b833
docs: extract api-key plugin to separate package and update related s…
Bekacru Mar 1, 2026
98640b1
docs: use full URL for 1.5 release og image
himself65 Mar 1, 2026
dcb1b76
feat(blog): enhance blog left panel with post details and add table o…
Bekacru Mar 1, 2026
dc069ef
docs: fix sidebar contents from old (#8221)
ping-maxwell Mar 1, 2026
46efd1d
feat(layout): update metadata with full URLs for icons and Open Graph…
Bekacru Mar 1, 2026
c574611
chore: fix manifest
Bekacru Mar 1, 2026
4e0b754
docs: update links to use full URL
Bekacru Mar 1, 2026
78333dd
docs: re-add razorpay and payu community plugins
himself65 Mar 1, 2026
933a640
docs(pricing): add explanation of events tracked by the dashboard
Bekacru Mar 1, 2026
373b405
docs: fix home-page demo video path (#8229)
ping-maxwell Mar 1, 2026
9d75188
docs: update path
Bekacru Mar 1, 2026
00ac840
docs: use local source instead of fetch script (#8231)
himself65 Mar 1, 2026
5c432bb
chore: improve contrast
Bekacru Mar 1, 2026
7ce796d
chore: fix mdx copy
Bekacru Mar 1, 2026
e3750bc
chore: improve pricing UI
Bekacru Mar 1, 2026
7f16f32
docs: add overscroll-contain to root layout (#8237)
bytaesu Mar 1, 2026
e8bb8fd
fix(docs): use blog post header image as OG image (#8234)
Copilot Mar 1, 2026
28d0a33
chore: docs lint fix (#8241)
himself65 Mar 1, 2026
96d2be3
chore: update callout for mcp
Bekacru Mar 1, 2026
f11aa32
chore: update toc
Bekacru Mar 1, 2026
d4dcb4c
chore: lint
Bekacru Mar 1, 2026
3728b2b
docs: improve toc and add copy md open in tabs on the heading
Bekacru Mar 1, 2026
4ac7866
chore: unlimited users
Bekacru Mar 1, 2026
58940f7
fix(generic-oauth): use discovery userinfo endpoint instead of hardco…
himself65 Mar 1, 2026
19ef8fb
chore: bump tsdown (#8240)
himself65 Mar 1, 2026
01ae4a7
chore: improve cli bundler (#8239)
himself65 Mar 1, 2026
8a0475f
fix(db): support verification operations with secondary storage (#8247)
himself65 Mar 1, 2026
56db73b
fix(core): revive date strings in safeJSONParse for pre-parsed object…
himself65 Mar 1, 2026
aa99b45
chore: update claude.md project structure (#8236)
bytaesu Mar 1, 2026
04e4ccd
chore: bump expo deps (#8250)
himself65 Mar 1, 2026
622695c
chore: add cherry-pick-release sub-agent (#8254)
himself65 Mar 1, 2026
c490eb8
chore: separate the demo into different lock files (#8251)
himself65 Mar 1, 2026
977bfa6
fix(expo): avoid shim `require` (#8253)
himself65 Mar 1, 2026
4904f46
chore: fix demo/nextjs setup
himself65 Mar 1, 2026
89c5b86
docs: update project structure to reflect correct documentation direc…
abdirahmanmahamoud Mar 1, 2026
c668c9b
docs: update Expo integration guide for SDK 55 compatibility (#8259)
himself65 Mar 1, 2026
63bb770
fix(client): use direct imports to fix bundler re-export type resolut…
himself65 Mar 1, 2026
bfca59f
fix: revert npm downloads label to "/ year" to match API data
bytaesu Mar 1, 2026
90de58a
chore: update events to audit logs
Bekacru Mar 1, 2026
af61437
chore: update pricing and landing infra sections
Bekacru Mar 1, 2026
897b21d
chore: update axiom logo
Bekacru Mar 1, 2026
ffa72e1
chore: update pricing
Bekacru Mar 1, 2026
099c3df
chore: improve landing
Bekacru Mar 1, 2026
927fb0a
docs: infrastructure docs (#8086)
ping-maxwell Mar 1, 2026
ad8645c
chore: lockfile
Bekacru Mar 1, 2026
c056217
chore: fix buttons
Bekacru Mar 1, 2026
e71b820
chore: hero readme
Bekacru Mar 1, 2026
9cf7d12
chore: update docs
Bekacru Mar 2, 2026
bd4b2e7
docs: fix mono font & CI (#8270)
ping-maxwell Mar 1, 2026
87607e7
chore: fix
Bekacru Mar 2, 2026
42fd7f8
chore: lint
Bekacru Mar 2, 2026
5ec049f
docs: fix typo in keyPrefix option for redisStorage (#8262)
bodadotsh Mar 1, 2026
38e70a4
ci: add manual workflow for npm dist-tag management
himself65 Mar 2, 2026
3715137
chore: release v1.5.1
himself65 Mar 2, 2026
efa4830
docs: bring back products section
Bekacru Mar 2, 2026
2dac024
chore: get started should use sign in
Bekacru Mar 2, 2026
79001f5
docs: reintroduce llms.txt (#8243)
ping-maxwell Mar 1, 2026
cb6939d
chore: update hero btns
Bekacru Mar 2, 2026
35deabd
docs: fix infrastructure CTA navigation and enterprise route (#8304)
bytaesu Mar 2, 2026
517442c
docs: fix wording on session cookie checks in Next.js integration (#8…
himself65 Mar 3, 2026
668957c
docs: improve landing page (#8308)
bytaesu Mar 3, 2026
f88bcd7
fix(sso): prefer UserInfo endpoint over ID token and map sub claim co…
himself65 Mar 2, 2026
4b97412
fix(oauth-provider): allow localhost subdomains in isLocalhost functi…
sicarius97 Mar 2, 2026
8959cb9
fix(cookies): use lookahead heuristic for splitting Set-Cookie header…
bytaesu Mar 2, 2026
5d7dd9e
fix: access control indexing type (#8155)
YevheniiKotyrlo Mar 3, 2026
55dd06e
fix: prevent double encoded cookie (#8133)
Oluwatobi-Mustapha Mar 3, 2026
e3ff2b3
fix(prisma-adapter): use deleteMany when deleting by non-unique field…
himself65 Mar 3, 2026
7425f72
fix(oauth-provider): customIdTokenClaims should override standard cla…
gustavovalverde Mar 3, 2026
54c8493
chore: release v1.5.2
himself65 Mar 3, 2026
318f827
chore: move adapter packages from deps to optional peer deps (#8303)
himself65 Mar 3, 2026
e3bc6a2
fix(sso): use internalAdapter for verification operations (#8353)
himself65 Mar 4, 2026
efcc238
fix(account): use accountId instead of id in accountInfo endpoint (#8…
NathanColosimo Mar 4, 2026
8e1ddc3
chore: release v1.5.3
himself65 Mar 4, 2026
f2b6074
docs: add max-width to docs content area (#8383)
bytaesu Mar 4, 2026
284e9c1
docs: fix layout bugs related to the TOC (#8356)
bytaesu Mar 4, 2026
9c7a143
docs: fix syntax highlighting on schema component (#8349)
ping-maxwell Mar 3, 2026
b34e200
docs: fix OG image (#8342)
ping-maxwell Mar 3, 2026
c15f6d9
chore: migrate infrastructure links to `dash.better-auth.com` (#8391)
bytaesu Mar 5, 2026
a88557a
docs: fix copy button client-side error (#8357)
bytaesu Mar 5, 2026
c32302c
docs: fix infrastructure product page get-started btn
ping-maxwell Mar 5, 2026
fa4e882
docs: migrate products page from query params to sub-routes (#8299)
bytaesu Mar 2, 2026
f25db09
docs: resolve type errors in docs page and nav component (#8306)
bytaesu Mar 2, 2026
cdd99fd
docs: fix fumadocs use async
ping-maxwell Mar 5, 2026
11c3959
docs: fix askAI query param to work (#8425)
ping-maxwell Mar 5, 2026
d2fe046
docs: add background tasks (#8395)
jonathansamines Mar 6, 2026
56857d6
fix: move adapter packages to dependencies to fix missing module erro…
himself65 Mar 5, 2026
b7a3129
fix(expo): handle origin override across mutable and immutable reques…
NathanColosimo Mar 5, 2026
389d1e6
docs: fix default secret value in options reference (#8295)
himself65 Mar 2, 2026
36349ca
docs: clarify `strictNullChecks` behavior under `strict` (#8294)
bytaesu Mar 2, 2026
7b5b17e
docs: add Openfort third party plugin (#5911)
jamalavedra Mar 4, 2026
352492d
docs: fix layout bugs related to the TOC (#8356)
bytaesu Mar 4, 2026
9024143
docs: add max-width to docs content area (#8383)
bytaesu Mar 4, 2026
c13b922
docs: fix railway developer portal link (#8381)
kadumedim Mar 5, 2026
ea37b90
docs: add warning to SQLite documentation for bun:sqlite (#8373)
simonxabris Mar 5, 2026
3ac2a6b
docs: resolve TOC jitter by removing nested scroll container (#8427)
bytaesu Mar 5, 2026
7339521
docs: add Vercel `Analytics` component (#8431)
bytaesu Mar 5, 2026
cb9e1bc
chore: release v1.5.4
himself65 Mar 6, 2026
d364eff
fix: pass `user` field through idToken sign-in body for Apple name su…
bytaesu Mar 6, 2026
9a229ce
fix(client): preserve stale session data on network or server errors …
bytaesu Mar 6, 2026
a126326
docs: add OAuth `mapProfileToUser` additionalFields callout (#8438)
ping-maxwell Mar 6, 2026
23f18f2
fix(organization): handle multi-role users in invite and member remov…
himself65 Mar 6, 2026
f46045e
fix(two-factor): wire twoFactorTable option to schema modelName (#8443)
himself65 Mar 6, 2026
fb7a0b7
fix(sso): handle bare domains in domain verification (#8369)
himself65 Mar 6, 2026
1801946
chore(adapters): mark ORM peer dependencies as optional (#8449)
himself65 Mar 6, 2026
7fefc2b
docs: use viewport height for split layouts (#8460)
bytaesu Mar 6, 2026
bbb6fda
docs: align npm downloads metric and label to yearly (#8232)
bytaesu Mar 1, 2026
b28151c
docs: remove incorrect href on sidebar (#8265)
bytaesu Mar 2, 2026
6974f2c
chore: update `landing` app env example (#8290)
bytaesu Mar 2, 2026
fd747c6
docs: match openfort icon with other sidebar icons (#8459)
bytaesu Mar 6, 2026
eba8f5b
docs: migrate search to Typesense and redesign docs (#8487)
bytaesu Mar 8, 2026
6bcd7c6
fix: add missing SubpageItem properties for docs-sidebar compatibility
bytaesu Mar 8, 2026
955381c
fix: add icon prop to SubpageLink component
bytaesu Mar 8, 2026
7ca45f4
docs: add better-auth-invite-plugin to community plugins (#7948)
bytaesu Mar 8, 2026
9766d38
docs: remove unused getSrc utility (#8230)
bytaesu Mar 8, 2026
6ad191e
blog: add RSS feed endpoint and generator (#8479)
bytaesu Mar 8, 2026
058bb8a
fix: correct sign-in link to dash.better-auth.com
bytaesu Mar 8, 2026
1221a2b
docs(2fa): fix OTP server API method names (#8477)
bytaesu Mar 8, 2026
e5ebb66
fix: restore features.tsx and align import with canary
bytaesu Mar 8, 2026
8e0e53e
fix: add suppressHydrationWarning to video elements
bytaesu Mar 8, 2026
2167ef7
docs: slower pulse animation for search loading (#8490)
bytaesu Mar 8, 2026
a075f3d
chore: pass env vars through turbo build task (#8489)
bytaesu Mar 8, 2026
4cea5b5
docs: improve ai-chat for mobile (#8505)
bytaesu Mar 9, 2026
a1224a4
docs: enable legacy mode for useTypesenseSearch hook (#8506)
bytaesu Mar 9, 2026
5d3c532
docs: redesign mobile menu with accordion nav and sticky sign-in foot…
bytaesu Mar 9, 2026
0734eb6
docs: balance resource dropdown layout and truncate labels (#8508)
bytaesu Mar 9, 2026
49a69d7
docs: improve careers position cards (#8509)
bytaesu Mar 9, 2026
297a1ca
docs: avoid mobile autofocus in AI chat (#8511)
bytaesu Mar 9, 2026
b6e3d83
docs: close mobile menu on viewport resize past lg breakpoint (#8513)
bytaesu Mar 9, 2026
ddf071a
chore: merge upstream better-auth v1.5.4
olliethedev Mar 9, 2026
55b85e8
chore: sync @btst packages to better-auth v1.5.4 + bump to v2.1.0
olliethedev Mar 9, 2026
20c942e
docs: update DEVELOPMENT.md and WEEKLY-SYNC-UPSTREAM.md with v1.5.4 s…
olliethedev Mar 9, 2026
a19b890
fix: resolve two CI failures from upstream merge
olliethedev Mar 10, 2026
28d89ff
chore: fix lint, format, and snapshot issues from upstream sync
olliethedev Mar 10, 2026
d3b6044
fix(ci): replace starsling-ubuntu-24.04 with ubuntu-latest in ci.yml …
olliethedev Mar 10, 2026
e38313a
chore: update CI workflows and fix linting config
olliethedev Mar 10, 2026
ec520cc
delete: remove convex.spec.ts test file as it is no longer applicable
olliethedev Mar 10, 2026
4f1f488
chore: update knip.jsonc to ignore additional workspace and script di…
olliethedev Mar 10, 2026
4159303
chore: format knip.jsonc ignoreWorkspaces for better readability and …
olliethedev Mar 10, 2026
be07a48
fix(cli): increase test timeouts to prevent CI flakiness
olliethedev Mar 10, 2026
738747f
fix(scim): increase testTimeout to 30s to prevent CI flakiness
olliethedev Mar 10, 2026
39dcfce
fix(test): bump testTimeout to 30s across all packages
olliethedev Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
123 changes: 123 additions & 0 deletions .claude/rules/release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# Release Process

## Stable Release (to `main` branch)

1. **Create a staging branch** from the `main` branch:
```bash
git checkout main
git pull origin main
git checkout -b v1.x.x-staging # e.g., v1.4.14-staging
```

2. **Cherry-pick commits** from `canary` branch:
```bash
git cherry-pick <commit-hash>
# Repeat for each commit you want to include
```

3. **Open a Pull Request** targeting the `main` branch

4. **Wait for CI** to pass (all checks must be green)

5. **Rebase and merge** the PR to `main` branch

6. **Bump version and create tag**:
```bash
git checkout main
git pull origin main
pnpm bump # Interactive prompt to select version, creates commit & tag, automatically pushes
```

7. The release workflow (`.github/workflows/release.yml`) will automatically:
* Generate changelog using `changelogithub`
* Build all packages
* Publish to npm with the `latest` tag

## Beta Release (on `canary` branch)

Beta versions are released from the `canary` branch:

```bash
git checkout canary
pnpm bump # Select a beta version (e.g., v1.4.15-beta.0)
git push origin canary --follow-tags
```

The release workflow will publish to npm with the `beta` tag.

## Version Branch Releases

For maintaining older versions (e.g., v1.3.x while v1.4.x is latest):

1. Create a version branch named `v1.3.x-latest`
2. Tags pushed from this branch will also receive the `latest` npm tag

## Cherry-picking Guidelines

When cherry-picking from `canary` to a stable release branch:

### API Compatibility

* **Check for new APIs**: Commits may use APIs that do not exist in the
target branch
* **Fix imports**: Some imports may need adjustment

### Handling Conflicts

* When resolving merge conflicts, keep **both** versions if they add
different tests/features (e.g., two separate `describe` blocks)
* For type conflicts, check if new type properties need to be added
to existing interfaces

### Skip Incompatible Commits

Skip commits that depend on features not in the target branch

### Squashing Fixes

**Never create separate compatibility fix commits.**
Always squash fixes into the original cherry-picked commit:

```bash
# Create fixup commit
git add <files>
git commit --fixup <original-commit-hash> --no-verify

# Squash with autosquash (repeat for all fixup commits first)
GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash <earliest-commit>^ --no-verify
```

### Revert Chains

When cherry-picking a sequence like: fix → revert → revert-of-revert,
just cherry-pick the original fix and skip both reverts (net effect
is the same).

### Test Verification

After cherry-picking, always run:

```bash
pnpm typecheck
pnpm lint
pnpm vitest <affected-test-files> --run
```

Remove tests that test features are not available in the target branch.

## Notes

* **Do not merge breaking changes to `main` branch** unless upgrading
minor versions (e.g., 1.4 to 1.5)
* **Merge conflicts**: Resolve them carefully.
Review each conflict to ensure no code is accidentally removed or
duplicated
* **Keep the release branch clean**: Do not create extra commits on
the releasing branch.
If you need to fix CI issues, squash the fix into the appropriate
existing commit
* All releases are triggered by pushing tags matching `v*`
* The CI determines the npm tag based on:
* Pre-release suffix in tag name (canary, beta, rc, next)
* Whether the commit is on `main` or a version branch (`v*.*.x-latest`)
* Always ensure CI is green before creating release tags
3 changes: 3 additions & 0 deletions .cspell.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@
// match any string starting with price_ (stripe related)
"price_[a-zA-Z0-9-_]+",

// match Stripe subscription IDs (sub_)
"sub_[a-zA-Z0-9-_]+",

// match any url-encoded string
"%[0-9A-Fa-f]{2}(?:%[0-9A-Fa-f]{2})*",

Expand Down
11 changes: 10 additions & 1 deletion .cspell/alt-languages.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,11 @@
usuario
registrado
registrado
Benutzer
gefunden
invalide
nicht
trouvé
Ungültige
Ungültiges
Utilisateur
encontrado
11 changes: 10 additions & 1 deletion .cspell/auth-terms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,13 @@ vnet
ctry
acrs
edov
fedcm
fedcm
bunx
npx
pnpx
agentic
Agentic
Timestampz
Vercel
rgba
idtoken
7 changes: 6 additions & 1 deletion .cspell/company-names.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,9 @@ faceit
xata
chonkie
dsari
paypalv
paypalv
sequenzy
Razorpay
razorpay
payu
PayU
4 changes: 3 additions & 1 deletion .cspell/custom-words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,6 @@ merch
prefs
uncompromised
myapp
Neue
Neue
CCPA
CPRA
28 changes: 27 additions & 1 deletion .cspell/names.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,30 @@ Bereket
Oskar
Gmerek
Lluis
Agusti
Agusti
Vijit
TPEOficial
GeKorm
Daanish2003
marcellosso
tobimori
zpg6
kevcube
erickweil
TheUntraceable
yultyyev
Fyrlex
alexasomba
Vijit
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate entry in cspell dictionary file

Low Severity

Vijit appears twice in .cspell/names.txt — on line 6 and again on line 19. Both are newly added entries in this diff. The duplicate serves no purpose and adds clutter to the dictionary.

Fix in Cursor Fix in Web

neiii
Theo
developedbyed
Dagmawi
Esayas
bekacru
beka
guilhermejansen
iamjasonkendrick
ejirocodes
0-Sandy
olliethedev
16 changes: 15 additions & 1 deletion .cspell/tech-terms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ devrel
rdbms
unstub
xlink
xenc
myprefix
oklch
onprem
encryptor
Expand All @@ -35,4 +37,16 @@ mlterm
rxvt
gitea
MMDD
ABCDEFGHJKLMNPQRSTUVWXYZ23456789
ABCDEFGHJKLMNPQRSTUVWXYZ23456789
setex
dyld
nsis
ftyp
heix
sessionMiddleware
SIEM
sess
reactivations
whsec
btst
orms
8 changes: 7 additions & 1 deletion .cspell/third-party.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,10 @@ giget
segoe
conar
nuxtzzle
Deel
Deel
WorkOS
authjs
vite
electronjs
wagmi
tldts
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ body:
- type: textarea
attributes:
label: System info
description: Output of `npx @better-auth/cli info --json`
description: Output of `npx auth info --json`
render: bash
placeholder: System and Better Auth info
validations:
Expand Down
68 changes: 68 additions & 0 deletions .github/actions/setup-playwright/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Setup Playwright
description: Cache and install Playwright chromium browser with system dependencies.

inputs:
working-directory:
description: 'Directory containing the project with the Playwright dependency'
required: false
default: 'e2e/integration'
browsers:
description: 'Browsers to install (e.g., "chromium", "chromium firefox", or leave empty for all)'
required: false
default: 'chromium'

outputs:
cache-hit:
description: 'Whether the Playwright browser cache was hit'
value: ${{ steps.cache.outputs.cache-hit }}
playwright-version:
description: 'Detected Playwright version'
value: ${{ steps.detect-version.outputs.version }}

runs:
using: composite
steps:
- name: Determine OS Cache Path
id: cache-path
shell: bash
run: |
if [ "$RUNNER_OS" = "Windows" ]; then
echo "path=~/AppData/Local/ms-playwright" >> "$GITHUB_OUTPUT"
elif [ "$RUNNER_OS" = "macOS" ]; then
echo "path=~/Library/Caches/ms-playwright" >> "$GITHUB_OUTPUT"
else
echo "path=~/.cache/ms-playwright" >> "$GITHUB_OUTPUT"
fi

- name: Detect Playwright Version
id: detect-version
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
PLAYWRIGHT_VERSION=$(pnpm ls @playwright/test --json | jq --raw-output '.[0].devDependencies["@playwright/test"].version')
if [ -z "$PLAYWRIGHT_VERSION" ] || [ "$PLAYWRIGHT_VERSION" = "null" ]; then
echo "::error::Could not detect @playwright/test version in ${{ inputs.working-directory }}. Ensure dependencies are installed before running this action."
exit 1
fi
echo "version=$PLAYWRIGHT_VERSION" >> "$GITHUB_OUTPUT"

- name: Cache Playwright Browsers
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5.0.1
id: cache
with:
path: ${{ steps.cache-path.outputs.path }}
# Dynamically inject the requested browsers into the cache key ('all' is used as a fallback string if empty)
key: ${{ runner.os }}-playwright-${{ inputs.browsers || 'all' }}-${{ steps.detect-version.outputs.version }}

- name: Install Playwright Browsers & OS Deps (Cache Miss)
if: steps.cache.outputs.cache-hit != 'true'
shell: bash
working-directory: ${{ inputs.working-directory }}
# If inputs.browsers is empty, this safely resolves to 'pnpm exec playwright install --with-deps'
run: pnpm exec playwright install ${{ inputs.browsers }} --with-deps

- name: Install Playwright OS Dependencies (Cache Hit)
if: steps.cache.outputs.cache-hit == 'true'
shell: bash
working-directory: ${{ inputs.working-directory }}
run: pnpm exec playwright install-deps ${{ inputs.browsers }}
Loading
Loading