Skip to content

feat(thundermail-mvp): integrate sign in with thundermail and scan qr code buttons#10970

Merged
rafaeltonholo merged 11 commits intothunderbird:feature/thundermail-mvpfrom
rafaeltonholo:feat/thundermail-mvp-integration
May 5, 2026
Merged

feat(thundermail-mvp): integrate sign in with thundermail and scan qr code buttons#10970
rafaeltonholo merged 11 commits intothunderbird:feature/thundermail-mvpfrom
rafaeltonholo:feat/thundermail-mvp-integration

Conversation

@rafaeltonholo
Copy link
Copy Markdown
Member

@rafaeltonholo rafaeltonholo commented May 1, 2026

Changes

  • Add thundermail_onboarding_enabled feature flag
  • Add ThundermailButtonPanel with sign-in with Thundermail and Scan QR code
  • Add ThundermailButtonPanel to migration screen
  • Integrate Thundermail sign-in flow via QR code import
  • Add :feature:thundermail:internal:common module
  • Implement navigation setup for Thundermail QR code flow
  • Wire Thundermail sign-in navigation to migration screen
  • Wire OAuth flow on "Sign with Thundermail" button
  • Reduce vertical spacing in ThundermailButtonPanel for better visual balance on smaller screens

Screenshots

Small phone - Portrait - Migration Screen
Light
Small phone - Portrait - Add Account
Light
Small phone - Landscape - Migration Screen
Light
Small phone - Landscape - Add Account
Light
Large phone - Portrait - Migration Screen
Light Dark
Large phone - Portrait - Add Account Screen
Light Dark
Large phone - Landscape - Migration Screen
Light Dark
Large phone - Landscape - Add Account Screen
Light Dark
Tablet - Portrait - Migration Screen
Light Dark
Tablet - Portrait - Add Account
Light Dark
Tablet - Landscape - Migration Screen
Light Dark
Tablet - Landscape - Add Account
Light Dark
K9-Mail
Light Dark

@rafaeltonholo rafaeltonholo requested a review from a team as a code owner May 1, 2026 13:56
@rafaeltonholo rafaeltonholo requested review from dani-zilla and removed request for a team May 1, 2026 13:56
@rafaeltonholo rafaeltonholo added feature-flag Changes guarded by a feature flag. Please add a comment stating the name: "feature-flag: abc" pr: stacked Must be used on a PR that is stacked on top of other(s) labels May 1, 2026
@github-actions github-actions Bot added the tb-team Tasks and features handled by project maintainers label May 1, 2026
@rafaeltonholo rafaeltonholo changed the title Feat/thundermail mvp integration feat(thundermail-mvp): integrate sign in with thundermail and scan qr code buttons May 1, 2026
@wmontwe
Copy link
Copy Markdown
Member

wmontwe commented May 4, 2026

I think listing the commits as part of the PR body, doesn't add value. If you consider this information is important, it should be added to the commit message as: cherry picked from commit e0052a88199c01a090efe3609cd75b30c82b8b8b. Then it's visible when you review commit by commit.

@rafaeltonholo
Copy link
Copy Markdown
Member Author

I think listing the commits as part of the PR body, doesn't add value. If you consider this information is important, it should be added to the commit message as: cherry picked from commit e0052a88199c01a090efe3609cd75b30c82b8b8b. Then it's visible when you review commit by commit.

The idea was to help the reviewer to know what the range of commits should be reviewed in this PR, as this contains all the commits from the parent PR as well.

Maybe a diff statement would be better? I'm still trying to find the best solution for situations like that

@rafaeltonholo rafaeltonholo force-pushed the feat/thundermail-mvp-integration branch from 1223ec3 to d7f61e6 Compare May 4, 2026 12:40
… flow

Move QR code scanning from account setup to dedicated Thundermail navigation module. Register Thundermail routes in FeatureLauncherNavHost and handle navigation between QR code scanning and account setup completion.
…reen

Add separate callbacks for Thundermail sign-in and QR code scanning. Update ThundermailButtonPanel to handle both actions independently and reduce visibility of route constants to internal.
@rafaeltonholo rafaeltonholo force-pushed the feat/thundermail-mvp-integration branch from d7f61e6 to 5121787 Compare May 4, 2026 13:42
@rafaeltonholo rafaeltonholo removed the pr: stacked Must be used on a PR that is stacked on top of other(s) label May 4, 2026
Copy link
Copy Markdown
Contributor

@dani-zilla dani-zilla left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does seem like importing via QR code still has an issue where you have to go into account settings to refresh the account monogram logo to be the initials on the account rather than "XX"

Besides that, I'm not seeing the crash I saw when importing accounts without the QR code.

However, I have noticed that if you use the QR code to pull up your account, don't sign in, choose later, go to the account and select server settings, it'll direct you to sign in. You can sign in, but nothing updates or shows that it's a functional account until you tap "Sync account."

Comment on lines +297 to +298
email?.let { put("email", it) }
name?.let { put("name", it) }
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we ever need to execute everything if we don't have the email address, at least? Also, do we want to check for empty strings here? It should be pretty controlled, I take it, but I noticed we test for null specifically on them in the test, and wondered if empty strings would be similarly invalid

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we ever need to execute everything if we don't have the email address, at least?

The actual email derives from either the preferred_username or email field within the id_token. At least one of these two must be available, with preferred_username being the first pick.

Also, do we want to check for empty strings here? It should be pretty controlled, I take it, but I noticed we test for null specifically on them in the test, and wondered if empty strings would be similarly invalid

Although I think it is unlikely that an id_token would return an empty string for these fields, I don't think it hurts to check them. I would consider an empty string as a malformed claim in an id_token, but I need to double-check if that is really a case.

@rafaeltonholo
Copy link
Copy Markdown
Member Author

It does seem like importing via QR code still has an issue where you have to go into account settings to refresh the account monogram logo to be the initials on the account rather than "XX"

Besides that, I'm not seeing the crash I saw when importing accounts without the QR code.

However, I have noticed that if you use the QR code to pull up your account, don't sign in, choose later, go to the account and select server settings, it'll direct you to sign in. You can sign in, but nothing updates or shows that it's a functional account until you tap "Sync account."

It does seem like importing via QR code still has an issue where you have to go into account settings to refresh the account monogram logo to be the initials on the account rather than "XX"

This is being handled by #10959

Besides that, I'm not seeing the crash I saw when importing accounts without the QR code.

However, I have noticed that if you use the QR code to pull up your account, don't sign in, choose later, go to the account and select server settings, it'll direct you to sign in. You can sign in, but nothing updates or shows that it's a functional account until you tap "Sync account."

This is the same behaviour the current version on main has when importing from a QR code.

@rafaeltonholo rafaeltonholo merged commit 4961140 into thunderbird:feature/thundermail-mvp May 5, 2026
14 checks passed
@rafaeltonholo rafaeltonholo deleted the feat/thundermail-mvp-integration branch May 5, 2026 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature-flag Changes guarded by a feature flag. Please add a comment stating the name: "feature-flag: abc" tb-team Tasks and features handled by project maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants