Skip to content

release: To Prod#1536

Merged
OleksandrUA merged 8 commits into
prodfrom
staging
Jun 12, 2026
Merged

release: To Prod#1536
OleksandrUA merged 8 commits into
prodfrom
staging

Conversation

@suisuss

@suisuss suisuss commented Jun 12, 2026

Copy link
Copy Markdown

No description provided.

OleksandrUA and others added 4 commits June 12, 2026 11:15
KEEP-812. Adds sendAccountDeactivatedEmail and calls it from the admin user
deactivate route after the transaction commits. The email tells the user their
account was deactivated for suspicious activity and points them at the public
support channels (email, Discord, Telegram) so a false positive can be reversed.

The send is best-effort: a failure is logged but does not fail the deactivation,
and it is suppressible per-call via an optional notifyUser body flag (default
true). Extends the admin-user-deactivate integration tests.
Phantom executions (enqueued but never picked up) leaked their raw
status through normalizeStatus, rendering an unstyled "Phantom" badge
in the analytics runs table. Map phantom to pending so it surfaces as a
styled Pending badge, and expand the workflow pending filter to also
match phantom rows (via a new workflowDbStatuses helper mirroring
directDbStatuses) so the badge, filter, and counts stay consistent.
…h-dodgy-workflows

feat: email user when their account is deactivated
…s-pending

fix: show phantom workflow runs as pending on analytics
Bring the suspension email in line with the other transactional emails:
- add the bold heading the OTP/new-device/invitation emails all have
- move the 'contact our support team' line into a highlighted callout box that
  points to the social channels in the footer, so a locked-out user can
  actually find how to reach us instead of hunting for the footer icons.
…olish

fix: polish account suspension email (heading + contact callout)
KEEP-817: Better Auth's two-factor plugin (1.6.11) expects a `verified`
field on the two_factor model. Its verify-totp path issues an UPDATE
setting verified=true whenever the row is not already verified; our
schema lacked the column, so the drizzle adapter stripped the update
into an empty SET and Postgres rejected it, breaking every fresh TOTP
sign-in at the session-minting step.

Add the column (NOT NULL DEFAULT true) plus migration 0109. The default
backfills existing enrolled rows so the plugin reads verified=true and
skips the write entirely. Verified locally with db:migrate against a
fresh Postgres 16 and the full unit suite.
fix: add verified column to two_factor for Better Auth TOTP sign-in
@OleksandrUA OleksandrUA merged commit a33e0a9 into prod Jun 12, 2026
35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants