Add custom PDS server support with enhanced security and UX
This commit enables users on custom Personal Data Servers (PDS) to sign in, addressing the limitation mentioned in the README warning.
Key features:
- Added optional PDS Server field to login form
- Comprehensive URL validation with security checks (HTTPS required except localhost)
- Auto-normalization of PDS URLs (adds https:// if missing)
- Enhanced error handling with user-friendly messages
- Progress indicators during authentication (spinner in sign-in button)
- Client-side validation for handle format and PDS URL format
- Support for both bsky.social (default) and custom PDS servers
Technical changes:
- popup/popup.html: Added PDS server input field with helpful hints
- popup/popup.js: Added validation, normalization, and progress UI
- popup/styles.css: Added button spinner animation
- lib/atproto.js: Updated createSession to accept optional service parameter
- background/background.js: Updated authenticate to pass service to API
- README.md: Removed warning, documented custom PDS support
Security features:
- HTTPS enforcement for production servers
- HTTP allowed only for localhost/local networks
- Validation prevents malformed URLs
- Clear error messaging for network/auth failures
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>