halkyon/packages/halkyon_base_server/migrations
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tizian 「ティツィアーン」 274b796faa
fix(auth): a hold-out moves a reset on only by its own time, and a reset lives 30 days at most
The reading of the full reading's fixes found that every refusal at the
address's ceiling moved a reset to 72 hours after it (A1): someone who
knows only the address kept the owner's own reset from ever taking effect
with one burst every three days, and kept a forgotten one alive (A2).

Now a hold-out that begins before a reset takes effect moves it on only by
the time it holds the owner out and no hold-out counted before did
(account_reset.heldOutUntil, under a row lock), so the owner gets 72 hours
outside hold-outs in total; and every reset not carried out lapses 30 days
after it was asked (resetLivesAtMost), whatever moved it, besides a week
after it took effect.

Migration (module, Learn's and Todo's servers, Learn's device schema):
ALTER TABLE "account_reset" ADD COLUMN "heldOutUntil" timestamp without
time zone; nullable, existing rows counted from now on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-23 14:12:59 +02:00
..
20261019115750898 halkyon_base: a Serverpod module for sign-in, accounts and instance basics 2026-10-19 14:29:28 +02:00
20261019200558685 refactor(profile): handles and profiles move into halkyon_base 2026-10-22 18:11:07 +02:00
20261019202835333-deletion-notices feat(accounts): one account across an instance's services (ADR 0016) 2026-10-22 18:11:07 +02:00
20261020111123780-passwords feat(auth): a password with TOTP on the register, and resets 2026-10-22 18:11:10 +02:00
20261020124836165-sessions-ended feat(auth): change the password and the recovery phrase while signed in 2026-10-23 14:12:40 +02:00
20261020185619505-recovery-proof-key fix(auth)!: the recovery phrase is proved by a key of its own 2026-10-23 14:12:43 +02:00
20261020194005842-second-factor-waits fix(auth): codes wait after ten wrong in a row, and the owner is told 2026-10-23 14:12:44 +02:00
20261020204618337-session-code-tries fix(auth): a session's wrong codes end the session, not the account's codes 2026-10-23 14:12:47 +02:00
20261020211224310-email-code-purpose fix(auth): a code by mail serves only what it was asked for 2026-10-23 14:12:48 +02:00
20261021100319502-session-ended-warning feat(auth): a session ended for its wrong proofs warns its owner 2026-10-23 14:12:51 +02:00
20261021110159448-second-factor-paths fix(auth): codes after the recovery phrase count apart from the password's 2026-10-23 14:12:52 +02:00
20261021134802955-reset-hold-outs fix(auth): a hold-out moves a reset on only by its own time, and a reset lives 30 days at most 2026-10-23 14:12:59 +02:00
migration_registry.txt fix(auth): a hold-out moves a reset on only by its own time, and a reset lives 30 days at most 2026-10-23 14:12:59 +02:00