- Callback now supports any provider (Gitea/GitHub) via providers.get_provider() - OAuth tokens stored in user_oauth_tokens table per user + provider - Login page shows both Gitea and GitHub OAuth buttons - config.py: github_client_id + github_client_secret - Auth flow no longer depends on gitea_oauth import — fully abstracted - Fallback admin user now sets is_active=1 and admin@localhost email