Commit Graph
93 Commits
Author SHA1 Message Date
LewisandTangled d00d72895a store: record-by-cid reverse index
Lewis: May this revision serve well! <lu5a@proton.me>
2026-07-25 08:27:40 +03:00
LewisandTangled 4f37ac26cd store: typed revs thru metastore keys & requests
Lewis: May this revision serve well! <lu5a@proton.me>
2026-07-25 08:27:39 +03:00
LewisandTangled 932b0c07d4 db: make stored handle optional when it no longer parses
Lewis: May this revision serve well! <lu5a@proton.me>
2026-07-25 08:27:39 +03:00
Lewis 6ec4484cad sqlx: add missing file
Lewis: May this revision serve well! <lu5a@proton.me>
2026-06-29 08:31:30 +03:00
Lewis aab1a945c2 session: deletes scope to did, route muts by did
Lewis: May this revision serve well! <lu5a@proton.me>
2026-06-28 09:55:11 +03:00
aveandTangled 9dc184ee33 bsky(auth): add grace period to legacy session refresh
Concurrent or retried com.atproto.server.refreshSession calls presenting the
same refresh token hit the reuse-detection path, which deleted the session and
returned "Refresh token has been revoked due to suspected compromise" —
logging users out at random. The legacy flow had no grace period, unlike OAuth.

Mirror the reference atproto PDS: every rotated refresh token gets a 2h grace
window measured from its own rotation time (used_refresh_tokens.used_at in
postgres; a rotated_at_ms field appended to the metastore used-marker, with
old-format markers decoding as outside the window). A refresh presenting a
recently-rotated token is served the session's current tokens, re-minted on
the fly with the same jti/expiry — signed JWTs are never persisted. Reuse
outside the window still revokes the session.

The grace lookup returns the session's encrypted signing key so the handler
verifies the presented token's signature before minting replacement tokens or
revoking a session; a forged token bearing a known jti gets a generic
rejection with no side effects.

Integration tests asserting the old replay-gets-401 behavior are reworked to
the new contract and now also cover forged-signature replays and
out-of-window revocation.
2026-06-27 23:54:22 +03:00
LewisandTangled 39a2e40b35 invite codes: dedup consumption, iron out kinks
Lewis: May this revision serve well! <lu5a@proton.me>
2026-06-26 13:28:49 +03:00
LewisandTangled e9dc57d6f4 fix(firehose): lost events if seq commits out of order
Lewis: May this revision serve well! <lu5a@proton.me>
2026-05-30 21:10:38 +03:00
LewisandTangled 4d2c7d4723 feat(auth): verification-gate override, inbound-migration bypass, store deleter improvement
Lewis: May this revision serve well! <lu5a@proton.me>
2026-05-23 23:02:43 +03:00
LewisandTangled a13343e1de fix(oauth): gc tokens in pg in the right order, more exposure of dpop err
Lewis: May this revision serve well! <lu5a@proton.me>
2026-05-14 16:51:53 +03:00
LewisandTangled eee6fb9ff4 feat(comms): EmailSender, permanent/transient routing
Lewis: May this revision serve well! <lu5a@proton.me>
2026-05-02 22:28:59 +03:00
LewisandTangled 34f050a1f0 feat(oauth): discoverable passkey authentication
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-12 11:16:58 +00:00
Lewis 05246aec58 feat(tranquil-store): gc and hardening
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:57:47 +03:00
Lewis 8d0e0c6810 feat(tranquil-store): whole test suite working
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:57:44 +03:00
Lewis a5c68a3506 feat(tranquil-store): metastore
Lewis: May this revision serve well! <lu5a@proton.me>
2026-04-10 13:57:43 +03:00
LewisandTangled 19b0ea19c6 refactor(tranquil-pds): consolidate repos, rate limits, validation, and auth helpers 2026-03-22 12:51:44 +00:00
LewisandTangled e6c8a44a42 feat(signal): add postgres-backed signal protocol store 2026-03-22 07:14:19 +00:00
LewisandTangled ebf5af4922 fix(backups): remove useless backups concept 2026-03-18 12:17:33 +00:00
LewisandTangled 7926c798c6 feat: cross-pds delegation 2026-03-17 19:22:34 +00:00
lewisandTangled 28ca66624a fix: ability to send more verifications 2026-02-24 10:13:11 +00:00
lewisandTangled cd7400bc8b fix: improved discord & signal comms 2026-02-05 16:13:45 +00:00
lewisandTangled b104dc938a fix: telegram comms ux improvements 2026-02-04 19:08:44 +00:00
lewisandTangled 442ca1434f fix: better dashboard UX 2026-02-02 19:29:03 +00:00
lewisandTangled 190f1a3430 feat: legacy 2fa impl 2026-01-28 18:40:08 +00:00
lewisandTangled d7b96773fd fix: better type-safety 2026-01-26 17:15:51 +00:00
lewisandTangled 8af0cfe0af fix: oauth consolidation, include-scope improvements 2026-01-25 13:07:32 +00:00
lewisandTangled a18be8c6fd feat: filesystem blob storage 2026-01-21 17:53:59 +00:00
lewisandTangled 12a189cb2b feat: oauth prompt=create, other frontend fixes 2026-01-19 17:44:24 +00:00
lewis b3ec7feb96 sso signup & login 2026-01-18 01:15:13 +02:00
lewis 4e29861990 migration improvements 2026-01-15 21:17:35 +02:00
lewis e09567f5cf sqlx cache regenerated for new query locations 2026-01-14 22:23:03 +02:00
lewis 0bad085ead delayed loading spinner in frontend, more functional-style code 2026-01-12 08:46:52 +02:00
lewis 16fb4dbd03 oauth error msg improvement, general code quality 2026-01-11 22:33:41 +02:00
lewis 7985f76c0d Streamplace oauth compatibility, mock plc dir in tests 2026-01-11 17:05:38 +02:00
lewis 8f595b5ffb Separate crates for separate concerns 2026-01-10 21:13:41 +02:00
lewis fbc2477771 Passkey-only accounts can opt into a password 2026-01-10 11:10:17 +02:00
lewis 9a516a012d Remove old user blocks 2026-01-06 19:49:42 +02:00
lewis 3954189c22 Functional typesafe backend 2026-01-04 15:18:26 +02:00
lewis 0f32cc3faa Performance improvements 2026-01-03 00:58:28 +02:00
lewis df2135b5e1 Backups, adversarial migrations 2026-01-02 00:24:32 +02:00
lewis a46d2d6f8d Age assurance override env var 2025-12-31 17:01:20 +02:00
lewis 4d6e21b00d pds-hosted did migrates away 2025-12-30 21:16:49 +02:00
lewis ea55590b6c Misc fixes for blobs and invites 2025-12-30 18:46:31 +02:00
lewis 7be60ea2d1 Fixed migration problem 2025-12-30 23:45:44 +02:00
lewis 70fce2f1f9 misc genesis fixes 2025-12-30 22:46:26 +02:00
lewis 6027e9517a Admin endoints vs ref 2025-12-29 20:58:04 +02:00
lewis 3b52a42156 Invite codes conf. vs ref 2025-12-29 20:00:58 +02:00
lewis 8cfc13fccc App password conf. vs ref 2025-12-29 19:36:01 +02:00
lewis 5aceed2ab3 Email conf. vs ref 2025-12-29 18:08:12 +02:00
lewis c302d2aea1 Account lifecycle conf. vs ref 2025-12-29 21:51:09 +02:00