Repository navigation
feat(auth): add independent email-code sign-in across clients and markets - #3042
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add email verification-code sign-in as an independent alternative to GitHub across desktop, CLI, mobile web, native mobile, and both markets. Email accounts do not use passwords and are never automatically linked to GitHub accounts.
This includes the implementation and follow-up fixes: authentication and migrations, client integration, deployment build fixes, branded email delivery, account display/avatar corrections, sign-in popup handling, and the mobile empty-device experience.
Type and Areas
Type: Feature, bug fix, UI/UX, tests, deployment documentation.
Areas: Identity service, Relay, MiniApp/Skin markets, desktop/Web UI, CLI, mobile web, Android/iOS/HarmonyOS, brand assets.
Motivation / Impact
methods=all. Existing identity IDs and device/session ownership remain intact.Verification
Passed during implementation and follow-up work:
cargo test -p openbitfun-miniapp-market-service --lib email_— 8 tests, including legacy migration preservation, authenticated email metadata, code consumption, and MIME structure.cargo test -p openbitfun-services-integrations --no-default-features --features account-identity --lib account_identity::profile_tests— legacy payload and additive email projection.pnpm --dir src/mobile-web run test:account-loginpnpm --dir src/mobile-web run test:account-browser— 16 account/persistence/race tests; the added cross-origin popup regression was also run separately withnode --test --test-name-pattern='sign-in uses a separate popup' src/mobile-web/tests/browser-account.test.mjs.pnpm --dir src/web-ui exec vitest run src/infrastructure/account-identity/AccountIdentityService.test.ts— 6 tests.node --test --test-name-pattern='verification email' scripts/generate-brand-assets.test.mjspnpm run theme:color-audit:all— all 23 surfaces;pnpm run i18n:audit— no warnings.Known existing check failures, not hidden or relaxed here:
DeviceToolsPage.tsx.Additional sign-in localization verification:
The outbound mail integration additionally supports an explicit private-IP-only SMTP relay mode, with no plaintext credential submission. Secure authenticated SMTP remains the default; 10 focused email-auth tests cover the new constraints and prior flows. Production Postfix/DKIM keys remain on the server and are not committed. The relay permits senders across the owned domain. Auth now submits to the same-host relay; direct MX delivery was accepted by Gmail, 163, QQ, and Proton, and the user confirmed receipt at all four addresses. The initial QQ SPF-cache rejection cleared on a targeted retry.
The repository now includes
deploy/outbound-mail/README.md, with a corresponding instance-specific runbook on the server. Email logo, header brand, and footer brand link to the official HTTPS website in all three locales; plain-text mail includes the website URL. Focused MIME tests, browser previews, repository hygiene, i18n, and theme audits passed after this update.Windows CI exposed a mock-model lifetime race during cold terminal startup. The mock listener now stays alive until its owning test drops it, rather than expiring 30 seconds after fixture creation. Existing terminal output/cancellation deadlines remain unchanged; the focused terminal regression passed locally (1 test); final Windows CI validates the platform-specific cold-start path.
Reviewer Notes
Checklist
Email sign-in review follow-up
This follow-up updates source and tests. Production remains on the previously deployed revision until the next deployment.