Skip to content

feat: use Material You colors throughout Thunderbird#11288

Closed
farzanni wants to merge 1 commit into
thunderbird:mainfrom
farzanni:material-you-colors
Closed

feat: use Material You colors throughout Thunderbird#11288
farzanni wants to merge 1 commit into
thunderbird:mainfrom
farzanni:material-you-colors

Conversation

@farzanni

@farzanni farzanni commented Jul 21, 2026

Copy link
Copy Markdown

Contribution Summary

Linked Issue/Ticket: Fixes #8340
RFC / Technical Design (if applicable): N/A

Description

Adds Android 12+ dynamic color support to Thunderbird while preserving the existing palette on older Android versions and on non-Android targets.

  • Opts only ThunderbirdBoltTheme into platform dynamic colors; K-9 Mail keeps its current theme.
  • Maps the Android Material 3 dynamic ColorScheme into Bolt's ThemeColorScheme while retaining Bolt's additional semantic colors.
  • Overrides Thunderbird's legacy XML theme tokens in values-v31, so legacy surfaces and Compose screens use the same wallpaper-derived palette.
  • Keeps the implementation at the Thunderbird app/theme boundary so shared K-9 behavior is unchanged.
  • Adds a unit test covering the Material-to-Bolt color-role mapping.

Screen Shots

Not included because the palette is generated at runtime from the device wallpaper and no Android 12+ emulator/device is available in the current environment.

Testing

Before rebasing, the production implementation passed:

  • :components:ui:bolt:compileAndroidMain
  • :app-thunderbird:compileFossDebugKotlin
  • :app-thunderbird:processFossDebugResources
  • Full fossRelease build and release lint (0 lint errors)

After rebasing onto the latest main and adding the mapping test:

  • git diff --check passed.
  • ./gradlew :components:ui:bolt:jvmTest :components:ui:bolt:spotlessCheck :app-thunderbird:compileFossDebugKotlin :app-thunderbird:processFossDebugResources --no-daemon was attempted, but Gradle stopped during configuration because Google Maven returned HTTP 404 for the upstream-pinned com.android.application:9.2.1 plugin. No project task executed in that attempt.

Risks / Trade-offs

  • Dynamic colors are available only on Android 12 (API 31) and newer; older Android versions keep the existing Thunderbird palette.
  • Bolt-only info, success, and warning roles have no Material dynamic equivalents, so the existing Thunderbird values are retained.
  • K-9 Mail is intentionally unchanged.

AI Disclosure

  • This contribution does not include any changes created or assisted by AI.
  • This contribution includes changes assisted by AI.
  • This contribution includes changes created by AI.

Contribution Checklist

  • I have read and affirm that my contribution adheres to Mozilla's Community Participation Guidelines
  • This contribution is in Kotlin where possible
  • This contribution does not use merge commits
  • This contribution adheres to the existing codestyle (run gradlew spotlessCheck to check and gradlew spotlessApply to format your source code; will be checked by CI).
  • This contribution does not break existing unit tests (run gradlew testDebugUnitTest; will be checked by CI).
  • This contribution includes tests for new functionality and maintains tests for updated functionality.
  • This contribution adheres to our Engineering process (RFC/Technical Design/ADR)
  • This PR has a descriptive title and body that accurately outlines all changes made, and contains a reference to the issue it fixes.

@github-actions

Copy link
Copy Markdown
Contributor

Missing report label. Set exactly one of: report: include, report: exclude OR report: highlight.

Use Android 12+ dynamic colors for Thunderbird Compose and legacy UI while preserving static palettes on older Android versions and other platforms. Keep Bolt-only semantic colors from the Thunderbird palette.

Fixes thunderbird#8340
@farzanni
farzanni force-pushed the material-you-colors branch from 0c63114 to cdf5fc7 Compare July 22, 2026 16:27
@farzanni farzanni mentioned this pull request Jul 22, 2026
@farzanni

Copy link
Copy Markdown
Author

Process update: I rebased this branch onto the latest main, corrected the commit attribution to my GitHub account, added a focused color-mapping test, and updated the PR body to match the current template with an accurate AI disclosure and verification notes. I also requested issue alignment/assignment on #8340. I do not have permission to apply repository labels; could a maintainer please add report: include?

@jbott-tbird

Copy link
Copy Markdown
Collaborator

Thank you @farzanni for your interest in helping us. At this time, we have decided to use the Thunderbird Bolt design system instead of Material You.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Material You

3 participants