this repo has no description
1# Lewis' Big Boy TODO list 2 3## Active development 4 5### OAuth scope authorization UI 6Display and manage OAuth scopes during authorization flows. 7 8- [ ] Parse and display requested scopes from authorization request 9- [ ] Human-readable scope descriptions (e.g., "Read your posts" not "app.bsky.feed.read") 10- [ ] Group scopes by category (read, write, admin, etc.) 11- [ ] Allow users to uncheck optional scopes before authorizing 12- [ ] Distinguish required vs optional scopes in UI 13- [ ] Remember scope preferences per client (don't ask again for same scopes) 14- [ ] Token endpoint respects user's scope selections 15- [ ] Protected endpoints check token scopes before allowing operations 16 17### Frontend 18So like... make the thing unique, make it cool. 19 20- [ ] Frontpage that explains what this thing is 21- [ ] Unique "brand" style both unauthed and authed 22- [ ] Better documentation on how to sub out the entire frontend for whatever the users want 23 24### Delegated accounts 25Accounts controlled by other accounts rather than having their own password. When logging in as a delegated account, OAuth asks you to authenticate with a linked controller account. Uses OAuth scopes as the permission model. 26 27- [ ] Account type flag in actors table (personal | delegated) 28- [ ] account_delegations table (delegated_did, controller_did, granted_scopes[], granted_at, granted_by, revoked_at) 29- [ ] Detect delegated account during authorize flow 30- [ ] Redirect to "authenticate as controller" instead of password prompt 31- [ ] Validate controller has delegation grant for this account 32- [ ] Issue token with intersection of (requested scopes :intersection-emoji: granted scopes) 33- [ ] Token includes act_as claim indicating delegation 34- [ ] Define standard scope sets (owner, admin, editor, viewer) 35- [ ] Create delegated account flow (no password, must add initial controller) 36- [ ] Controller management page (add/remove controllers, modify scopes) 37- [ ] "Act as" account switcher for users with delegation grants 38- [ ] Log all actions with both actor DID and controller DID 39- [ ] Audit log view for delegated account owners 40 41### Passkey support 42Modern passwordless authentication using WebAuthn/FIDO2, alongside or instead of passwords. 43 44- [ ] passkeys table (id, did, credential_id, public_key, sign_count, created_at, last_used, friendly_name) 45- [ ] Generate WebAuthn registration challenge 46- [ ] Verify attestation response and store credential 47- [ ] UI for registering new passkey from settings 48- [ ] Detect if account has passkeys during OAuth authorize 49- [ ] Offer passkey option alongside password 50- [ ] Generate authentication challenge and verify assertion 51- [ ] Update sign count (replay protection) 52- [ ] Allow creating account with passkey instead of password 53- [ ] List/rename/remove passkeys in settings 54 55### Private/encrypted data 56Records that only authorized parties can see and decrypt. Requires key federation between PDSes. 57 58- [ ] Survey current ATProto discourse on private data 59- [ ] Document Bluesky team's likely approach 60- [ ] Design key management strategy 61- [ ] Per-user encryption keys (separate from signing keys) 62- [ ] Key derivation for per-record or per-collection encryption 63- [ ] Encrypted record storage format 64- [ ] Transparent encryption/decryption in repo operations 65- [ ] Protocol for sharing decryption keys between PDSes 66- [ ] Handle key rotation and revocation 67 68--- 69 70## Completed 71 72Core ATProto: Health, describeServer, all session endpoints, full repo CRUD, applyWrites, blob upload, importRepo, firehose with cursor replay, CAR export, blob sync, crawler notifications, handle resolution, PLC operations, did:web, full admin API, moderation reports. 73 74OAuth 2.1: Authorization server metadata, JWKS, PAR, authorize endpoint with login UI, token endpoint (auth code + refresh), revocation, introspection, DPoP, PKCE S256, client metadata validation, private_key_jwt verification. 75 76App endpoints: getPreferences, putPreferences, getProfile, getProfiles, getTimeline, getAuthorFeed, getActorLikes, getPostThread, getFeed, registerPush (all with local-first + proxy fallback). 77 78Infrastructure: Sequencer with cursor replay, postgres repo storage with atomic transactions, valkey DID cache, debounced crawler notifications with circuit breakers, multi-channel notifications (email/Discord/Telegram/Signal), image processing, distributed rate limiting, security hardening. 79 80Web UI: OAuth login, registration, email verification, password reset, multi-account selector, dashboard, sessions, app passwords, invites, notification preferences, repo browser, CAR export, admin panel. 81 82Auth: ES256K + HS256 dual support, JTI-only token storage, refresh token family tracking, encrypted signing keys (AES-256-GCM), DPoP replay protection, constant-time comparisons.