feat(settings): reorder top-level settings sections and add appearance subtext #169

Merged
JMR-dev merged 1 commits from feat-158-settings-hierarchy into main 2026-07-02 22:08:30 +00:00
JMR-dev commented 2026-07-02 21:58:34 +00:00 (Migrated from github.com)

Summary

Reorders SettingsScreen's top-level (non-Advanced) sections and relabels a few headers per #158's acceptance criteria. Advanced's internal order is untouched (that's #162).

New top-level order: Accounts -> Message downloading (moved up to directly follow Accounts) -> Contacts -> Appearance (new descriptive subtext) -> Settings Backup (renamed from "Backup") -> Notifications (row renamed "New mail notifications", drops the hyphen) -> Storage on this device -> Report a Problem (trailing, header-less) -> Advanced.

  • Appearance now shows a two-line subtext under the header: "Match device theme" / "Material You theming (Android 12+)". This is descriptive copy only, not a new toggle — LibreMailTheme(darkTheme = isSystemInDarkTheme(), ...) already always follows the system light/dark setting, and the existing "Use wallpaper colors" switch is unchanged.
  • Dropped the now-single-item settings_diagnostics "Diagnostics" header above "Report a Problem" since it's the sole trailing item; this mirrors AccountSettingsScreen's existing header-less trailing "Remove account" row.
  • Two decisions the ticket flagged as open, made per its own suggested defaults (flagging here for visibility): Contacts placement isn't in the ticket's numbered order, so it stays in its prior relative spot (directly before Appearance); and the Diagnostics header is dropped rather than kept, per the reasoning above.
  • No functional/behavioral change to any toggle or radio — presentation/ordering only.

Test plan

  • assembleDebug, testDebugUnitTest, lintDebug, ktlintCheck, detekt, compileDebugAndroidTestKotlin all green locally (JDK 21).
  • Checked existing SettingsScreenTest/AccountSettingsScreenTest androidTest assertions — none depend on section order or the renamed string values, so none needed updating.

Closes #158

🤖 Generated with Claude Code

## Summary Reorders `SettingsScreen`'s top-level (non-Advanced) sections and relabels a few headers per #158's acceptance criteria. Advanced's internal order is untouched (that's #162). New top-level order: **Accounts** -> **Message downloading** (moved up to directly follow Accounts) -> **Contacts** -> **Appearance** (new descriptive subtext) -> **Settings Backup** (renamed from "Backup") -> **Notifications** (row renamed "New mail notifications", drops the hyphen) -> **Storage on this device** -> **Report a Problem** (trailing, header-less) -> **Advanced**. - Appearance now shows a two-line subtext under the header: "Match device theme" / "Material You theming (Android 12+)". This is descriptive copy only, not a new toggle — `LibreMailTheme(darkTheme = isSystemInDarkTheme(), ...)` already always follows the system light/dark setting, and the existing "Use wallpaper colors" switch is unchanged. - Dropped the now-single-item `settings_diagnostics` "Diagnostics" header above "Report a Problem" since it's the sole trailing item; this mirrors `AccountSettingsScreen`'s existing header-less trailing "Remove account" row. - Two decisions the ticket flagged as open, made per its own suggested defaults (flagging here for visibility): **Contacts** placement isn't in the ticket's numbered order, so it stays in its prior relative spot (directly before Appearance); and the Diagnostics header is dropped rather than kept, per the reasoning above. - No functional/behavioral change to any toggle or radio — presentation/ordering only. ## Test plan - [x] `assembleDebug`, `testDebugUnitTest`, `lintDebug`, `ktlintCheck`, `detekt`, `compileDebugAndroidTestKotlin` all green locally (JDK 21). - [x] Checked existing `SettingsScreenTest`/`AccountSettingsScreenTest` androidTest assertions — none depend on section order or the renamed string values, so none needed updating. Closes #158 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.