Migrate to ATProto PDS storage using Standard lexicon
Documents are now stored as site.standard.document records on each
user's PDS via com.atproto.repo XRPC endpoints. Local SQLite retains
only user accounts and ATProto token sessions.
- Add atproto_sessions table to persist DPoP keys and OAuth tokens
- Build XRPC client with DPoP auth, ath claim (RFC 9449), and token refresh
- Replace repo/file model with Document/MarkdownContent (at.markpub.markdown)
- Replace all repo/file handlers and routes with document handlers
- Add site.standard.publication auto-creation on first document
- Request transition:generic scope for write access to custom collections
- Drop repos/files/versions/comments tables (migration 004)
- Remove go-diff dependency and internal/version package
- Add Cache-Control: no-store to client-metadata.json
- Configure custom domain diffdown.jluther.net
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>