commits
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>
- Update module path to github.com/limeleaf/diffdown
- Update all import paths in Go source files
- Update templates, navbar logo, page titles
- Rename env var MARKDOWNHUB_BASE_URL → DIFFDOWN_BASE_URL
- Update ATProto client_name to Diffdown
- Update README and default local db filename
Note: Fly.io app remains at markdownhub.fly.dev (infrastructure rename separate)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CSS custom properties for dark theme on [data-theme="dark"] and prefers-color-scheme
- Theme toggle button (☀/🌙) in navbar, persisted to localStorage
- Flash-free theme application via inline script in <head>
- CodeMirror oneDark theme switches dynamically via Compartment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add MARKDOWNHUB_BASE_URL to fly.toml for public HTTPS client_id URL
- Fix migration system to track applied migrations (schema_migrations table)
- Add .gitignore (db files, binary)
- Update README: use 127.0.0.1 instead of localhost (RFC 8252 compliance)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add ATProto OAuth handlers (ClientMetadata, ATProtoLoginPage,
ATProtoLoginSubmit, ATProtoCallback) with full PAR + PKCE + DPoP
support; remove defunct OAuthGitHub/OAuthGoogle handlers and update
server routes accordingly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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>
- Update module path to github.com/limeleaf/diffdown
- Update all import paths in Go source files
- Update templates, navbar logo, page titles
- Rename env var MARKDOWNHUB_BASE_URL → DIFFDOWN_BASE_URL
- Update ATProto client_name to Diffdown
- Update README and default local db filename
Note: Fly.io app remains at markdownhub.fly.dev (infrastructure rename separate)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CSS custom properties for dark theme on [data-theme="dark"] and prefers-color-scheme
- Theme toggle button (☀/🌙) in navbar, persisted to localStorage
- Flash-free theme application via inline script in <head>
- CodeMirror oneDark theme switches dynamically via Compartment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add MARKDOWNHUB_BASE_URL to fly.toml for public HTTPS client_id URL
- Fix migration system to track applied migrations (schema_migrations table)
- Add .gitignore (db files, binary)
- Update README: use 127.0.0.1 instead of localhost (RFC 8252 compliance)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>