Highlights
- Fix all logins failing with
SCHEMA_MISMATCHonaccounts.issuer(#283). Better Auth ≥ 1.7.3 validates the database schema at startup and rejects theaccountstable because itsissuercolumn wasNOT NULLwithout a default — every sign-in/sign-up request then died withBetterAuthError: SCHEMA_MISMATCH (unexpected-required-column). This release makes the schema conform again:accounts.issuernow has aDEFAULT ''(migration0025_accounts_issuer_defaultrebuilds the table on existing databases and backfills empty issuers the same way0024did).- A boot-time schema check repairs legacy database shapes automatically on startup (including upgrades from ≤ v1.11.2).
- An
account.createafter-hook backfills the issuer (local:credentialfor password accounts,local:oauth:<provider>otherwise) because Better Auth 1.7.4 silently drops unknown fields in its adapter — without this, newly created accounts would have an empty issuer and CPM's issuer-keyed queries (password change, account linking, identity lookup) would miss them. - If the data directory is not writable (the
docker cpownership trap from the issue), startup now fails with an explicit message naming uid10001and thechown 10001:10001fix instead of a rawSQLITE_READONLYerror.
Scope note: the released tags v1.10.0 – v1.11.2 pinned Better Auth 1.7.2 and were never affected; the bug shipped in Docker images built after the Better Auth 1.7.4 upgrade — i.e. the
latesttag since 2026-09-15. This release moveslatestto a fixed build.
Maintenance
- e2e: plant the stale L4 apply lock as root (mirrors how a crashed apply leaves the files owned by the sidecar user on the shared volume) and raise the
tcpSendread timeout to 10 s so emulatedlinux/amd64echo backends don't flake under full-suite load.
Changes
- 46c8481 test(e2e): plant stale L4 lock as root and tolerate slow emulated echo backends
- 4af1bf6 fix(auth): give accounts.issuer a DB default and repair legacy shapes (#283)
Full Changelog: v1.11.2...v1.11.3