feat: improve Gmail setup UX with easy/advanced options#248
Open
atani wants to merge 6 commits intoavihaymenahem:mainfrom
Open
feat: improve Gmail setup UX with easy/advanced options#248atani wants to merge 6 commits intoavihaymenahem:mainfrom
atani wants to merge 6 commits intoavihaymenahem:mainfrom
Conversation
- Add i18next and react-i18next for internationalization - Create English (en.json) and Japanese (ja.json) translation files with 700+ translation keys covering all UI strings - Refactor 65+ components to use useTranslation() hook - Add language switcher in Settings > General (English / Japanese) - Persist language preference in SQLite, restore on startup - Default language auto-detected from OS locale - Refactor constants/shortcuts.ts to getShortcuts(t) factory - Add nameKey to color themes for translatable theme names - Initialize i18n in test setup with English translations
Round 1-3 review-fix loop results: - Refactor 14 additional components: ContextMenuPortal, CalDavSettings, AddCalDavAccount, ContactSidebar, SubscriptionManager, SmartLabelEditor, SmartFolderEditor, QuickStepEditor, TemplateEditor, ContactEditor, CalendarReauthBanner, EventDetailModal, ConfirmDialog, InputDialog, etc. - Translate entire help content system (1300+ lines, 14 categories, ~50 cards) via getHelpCategories(t) factory function - Add App.tsx sync status translations (syncing/complete/failed) - Fix SettingsPage.tsx remaining strings (categories, sidebar, DAY_NAMES) - Fix AddImapAccount.tsx placeholder strings - Fix networkErrors.ts with i18n.t() for non-component context - Fix App.tsx stale closure: use i18n.t() instead of hook t in useEffect - Add en/ja key parity test (1619 keys, perfect match) - Add getShortcuts(t) translated output tests - Add initImmediate: false for synchronous test setup
- Add two-path Gmail setup: "Easy Setup" (IMAP + App Password, recommended) and "Fast Sync" (Gmail API, advanced) - Easy Setup sends users directly to IMAP wizard — no Google Cloud Console needed - Add Gmail to IMAP auto-discovery (imap.gmail.com:993, smtp.gmail.com:465) - Redesign SetupClientId as 3-step wizard with direct links: Step 1: Open Gmail API page (direct link) Step 2: Create OAuth credentials (direct link + one-click URI copy) Step 3: Paste Client ID and Secret - Add translations for all new strings (en + ja)
When Gmail address is detected in the IMAP wizard, show an inline guide panel with a direct link to Google's App Password page and clear instructions. Replaces the generic password hint with Gmail-specific guidance.
Remove gmailEasyStep1/Step1Link/Step2/Step3 and requires2fa keys that were defined in both en.json and ja.json but never referenced in any component.
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
imap.gmail.com/smtp.gmail.com) to the IMAP auto-discovery provider list so server settings are pre-filled automatically.Test plan
@gmail.comaddress in the IMAP wizard > verify the App Password guide appears inline@googlemail.comaddress > verify the same guide appearshttp://127.0.0.1:17248npx tsc --noEmit-- passesnpm run test-- all 1566 tests pass