feat(accountsetup): add AOL provider with app-password help and IMAP/SMTP presets #190

Merged
JMR-dev merged 4 commits from feat-156-154-aol-provider into main 2026-07-03 02:37:39 +00:00
JMR-dev commented 2026-07-03 01:59:41 +00:00 (Migrated from github.com)

Summary

Adds MailProvider.AOL as a fourth guided app-password provider (Gmail/Yahoo/iCloud/AOL), positioned after iCloud in the picker. Closes the coupled pair of #156 and #154 together, since AOL isn't usable in the picker without its servers.

Verified against AOL's current live docs at implementation time (not just the issue text):

  • App-password help: https://help.aol.com/articles/Create-and-manage-app-password (AOL's own "Create and manage 3rd-party app passwords" article — confirmed still live).
  • Two-factor: no twoFactorHelpUrl. Directly checked both AOL's app-password article and its separate "2-Step Verification" article (https://help.aol.com/articles/2-step-verification-stronger-than-your-password-alone) — neither treats 2FA as a prerequisite for generating an app password, so AOL follows Yahoo's pattern here, not Gmail/iCloud's.
  • IMAP: imap.aol.com:993, MailSecurity.SSL_TLS — matches issue #154, confirmed via AOL's official "Use POP or IMAP..." help page and the Thunderbird ISPDB autoconfig for aol.com.
  • SMTP: smtp.aol.com:465, MailSecurity.SSL_TLS — this is where implementation deviated from issue #154's assumption. The issue expected AOL to document both 465 (SSL/TLS) and 587 (STARTTLS) the way Gmail/iCloud do. Direct verification of two separate official AOL help pages, plus the Thunderbird ISPDB, found only port 465/SSL documented for SMTP submission — no 587/STARTTLS alternative appears anywhere in AOL's own docs. So this entry follows Yahoo's existing rationale (465/SSL_TLS) instead, and the class KDoc was updated to say so.

Changes

  • domain/model/MailProvider.kt — new AOL entry + updated class/param KDoc (now describes 4 providers, and groups Yahoo+AOL as the "465/SSL_TLS only" camp vs. Gmail/iCloud's "587/STARTTLS" camp).
  • ui/accountsetup/AppPasswordSetupScreen.kt — providerIntro() and twoFactorHelpLabel() (both exhaustive when blocks over MailProvider) gain an AOL branch. AccountPickerScreen.kt needed no change — it already lists providers generically via MailProvider.entries.
  • res/values/strings.xml — new app_password_intro_aol string, phrased like Yahoo's (no 2FA mention, since AOL doesn't gate on it either).
  • domain/model/MailProviderTest.kt — new AOL preset test, app-password-help-URL test, and assertions folded into the existing shared tests (fromKey, forImapHost, brandFor, two-factor-null-for-yahoo-and-aol).

Test plan

  • assembleDebug, testDebugUnitTest (18/18 MailProviderTest cases pass, 0 failures), lintDebug, ktlintCheck, detekt, compileDebugAndroidTestKotlin — all green locally under JDK 21.
  • Diff scoped to exactly the four files above (verified via git diff --stat).

Closes #156
Closes #154

🤖 Generated with Claude Code

## Summary Adds `MailProvider.AOL` as a fourth guided app-password provider (Gmail/Yahoo/iCloud/AOL), positioned after iCloud in the picker. Closes the coupled pair of #156 and #154 together, since AOL isn't usable in the picker without its servers. **Verified against AOL's current live docs at implementation time** (not just the issue text): - **App-password help**: `https://help.aol.com/articles/Create-and-manage-app-password` (AOL's own "Create and manage 3rd-party app passwords" article — confirmed still live). - **Two-factor**: no `twoFactorHelpUrl`. Directly checked both AOL's app-password article and its separate "2-Step Verification" article (`https://help.aol.com/articles/2-step-verification-stronger-than-your-password-alone`) — neither treats 2FA as a prerequisite for generating an app password, so AOL follows Yahoo's pattern here, not Gmail/iCloud's. - **IMAP**: `imap.aol.com:993`, `MailSecurity.SSL_TLS` — matches issue #154, confirmed via AOL's official "Use POP or IMAP..." help page and the Thunderbird ISPDB autoconfig for `aol.com`. - **SMTP**: `smtp.aol.com:465`, `MailSecurity.SSL_TLS` — this is where implementation deviated from issue #154's assumption. The issue expected AOL to document both 465 (SSL/TLS) and 587 (STARTTLS) the way Gmail/iCloud do. Direct verification of two separate official AOL help pages, plus the Thunderbird ISPDB, found **only** port 465/SSL documented for SMTP submission — no 587/STARTTLS alternative appears anywhere in AOL's own docs. So this entry follows Yahoo's existing rationale (465/SSL_TLS) instead, and the class KDoc was updated to say so. ## Changes - `domain/model/MailProvider.kt` — new `AOL` entry + updated class/param KDoc (now describes 4 providers, and groups Yahoo+AOL as the "465/SSL_TLS only" camp vs. Gmail/iCloud's "587/STARTTLS" camp). - `ui/accountsetup/AppPasswordSetupScreen.kt` — `providerIntro()` and `twoFactorHelpLabel()` (both exhaustive `when` blocks over `MailProvider`) gain an AOL branch. `AccountPickerScreen.kt` needed no change — it already lists providers generically via `MailProvider.entries`. - `res/values/strings.xml` — new `app_password_intro_aol` string, phrased like Yahoo's (no 2FA mention, since AOL doesn't gate on it either). - `domain/model/MailProviderTest.kt` — new AOL preset test, app-password-help-URL test, and assertions folded into the existing shared tests (`fromKey`, `forImapHost`, `brandFor`, two-factor-null-for-yahoo-and-aol). ## Test plan - [x] `assembleDebug`, `testDebugUnitTest` (18/18 `MailProviderTest` cases pass, 0 failures), `lintDebug`, `ktlintCheck`, `detekt`, `compileDebugAndroidTestKotlin` — all green locally under JDK 21. - [x] Diff scoped to exactly the four files above (verified via `git diff --stat`). Closes #156 Closes #154 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.