Extend usernameRE to [a-z0-9_.-], preserve dots in SanitizeForUsername,
and add tests for validation, sanitization, and nip05 sync precedence.
Co-authored-by: Cursor <cursoragent@cursor.com>
Bundle swagger-ui-dist@5.32.5 (bundle + CSS) with go:embed and expose
/docs/swagger-ui-bundle.js and /docs/swagger-ui.css so /docs works without
external script loads (fixes timeouts when unpkg is unreachable).
Co-authored-by: Cursor <cursoragent@cursor.com>
- subscription_type defaults to lifetime when omitted; validated when provided
- years is only required (and enforced) when subscription_type is yearly
- username uniqueness check and validation are skipped when username is empty
- Update OpenAPI spec to reflect pubkey as the only required field