Settings hierarchy list #158

Closed
opened 2026-07-02 20:41:34 +00:00 by JMR-dev · 0 comments
JMR-dev commented 2026-07-02 20:41:34 +00:00 (Migrated from github.com)

Context

SettingsScreen.kt currently renders its top-level sections in this order: Accounts,
Notifications (settings_notifications), Contacts (autocomplete), Appearance,
Message downloading (settings_downloading), Diagnostics (Report a problem), Backup,
Storage on this device (retention), then the collapsible Advanced block. This ticket
reorders and relabels the top-level (non-Advanced) sections; Advanced's own internal order is
covered separately by #162.

Requested order, with the renames it implies:

  1. Accounts — unchanged.
  2. Message downloading — moved up from position 5. The header string
    (settings_downloading = "Message downloading") already matches; no rename needed, just move
    the block (fetch-policy radios) to follow Accounts.
  3. Appearance — add a two-line subtext under the section header: "Match device theme" /
    "Material You theming (Android 12+)". Note: there is no user-facing "match device theme"
    setting today — LibreMailTheme(darkTheme: Boolean = isSystemInDarkTheme(), ...)
    (ui/theme/Theme.kt) already always follows the system light/dark setting, unconditionally.
    So this reads as descriptive copy, not a new toggle: line 1 explains the (already-automatic)
    light/dark behavior, line 2 explains the existing "Use wallpaper colors" switch
    (settings_dynamic_color_summary = "Material You dynamic theming (Android 12+)"). Confirm that
    reading before implementing — if a real light/dark override toggle is actually wanted, that's a
    materially bigger, separate ticket.
  4. Settings Backup — rename the section header string settings_backup from "Backup" to
    "Settings Backup" (the row content — "Include settings in Android Backup" — is unaffected).
  5. New mail notifications — rename settings_new_mail from "New-mail notifications" to
    "New mail notifications" (drop the hyphen). Move the section (currently second) down to this
    position.
  6. Storage on this device — the retention section (RetentionSection,
    settings_retention = "Storage on this device" already matches). Per #162, "Background battery
    usage" moves out of Advanced into the main list "just above local message retention options" —
    i.e. immediately before this section. Coordinate sequencing with #162.
  7. Report a Problem — moved from its current position (under a "Diagnostics" header) to the
    end of the list. Decide whether to keep the standalone "Diagnostics" SectionHeader above it
    now that it's a single trailing item, or drop the header since the item reads as self-explanatory
    at the bottom of the list.

Open questions

  • The Contacts section (recipient-autocomplete row, #127-129) isn't mentioned in the requested
    order. Confirm where it should land — left in its current spot (between Notifications' old
    position and Appearance) is the safest default absent other guidance, but flag this for
    confirmation rather than silently guessing.

Scope

  • Reorder the top-level sections in SettingsScreen.kt per the list above.
  • Rename settings_backup ("Backup" → "Settings Backup") and settings_new_mail
    ("New-mail notifications" → "New mail notifications") in res/values/strings.xml.
  • Add the two-line Appearance subtext (new string resource) under the settings_appearance
    SectionHeader.
  • Resolve the Contacts-section placement and the Diagnostics-header question above before
    or during implementation.

Acceptance criteria

  • Settings screen renders sections in the order specified, with the renamed headers and the new
    Appearance subtext.
  • No functional change to any toggle/radio behavior — this is a presentation/ordering pass only.

Relevant files

  • ui/settings/SettingsScreen.kt, ui/settings/SettingsComponents.kt (RetentionSection),
    res/values/strings.xml.

Dependencies

Coordinate with #162 (Advanced Settings hierarchy — moves Background battery usage into this
list, just above Storage on this device).

## Context `SettingsScreen.kt` currently renders its top-level sections in this order: **Accounts**, **Notifications** (`settings_notifications`), **Contacts** (autocomplete), **Appearance**, **Message downloading** (`settings_downloading`), **Diagnostics** (Report a problem), **Backup**, **Storage on this device** (retention), then the collapsible **Advanced** block. This ticket reorders and relabels the top-level (non-Advanced) sections; Advanced's own internal order is covered separately by #162. Requested order, with the renames it implies: 1. **Accounts** — unchanged. 2. **Message downloading** — moved up from position 5. The header string (`settings_downloading` = "Message downloading") already matches; no rename needed, just move the block (fetch-policy radios) to follow Accounts. 3. **Appearance** — add a two-line subtext under the section header: "Match device theme" / "Material You theming (Android 12+)". Note: there is no user-facing "match device theme" *setting* today — `LibreMailTheme(darkTheme: Boolean = isSystemInDarkTheme(), ...)` (`ui/theme/Theme.kt`) already always follows the system light/dark setting, unconditionally. So this reads as **descriptive copy**, not a new toggle: line 1 explains the (already-automatic) light/dark behavior, line 2 explains the existing "Use wallpaper colors" switch (`settings_dynamic_color_summary` = "Material You dynamic theming (Android 12+)"). Confirm that reading before implementing — if a real light/dark override toggle is actually wanted, that's a materially bigger, separate ticket. 4. **Settings Backup** — rename the section header string `settings_backup` from "Backup" to "Settings Backup" (the row content — "Include settings in Android Backup" — is unaffected). 5. **New mail notifications** — rename `settings_new_mail` from "New-mail notifications" to "New mail notifications" (drop the hyphen). Move the section (currently second) down to this position. 6. **Storage on this device** — the retention section (`RetentionSection`, `settings_retention` = "Storage on this device" already matches). Per #162, "Background battery usage" moves out of Advanced into the main list "just above local message retention options" — i.e. immediately before this section. Coordinate sequencing with #162. 7. **Report a Problem** — moved from its current position (under a "Diagnostics" header) to the end of the list. Decide whether to keep the standalone "Diagnostics" `SectionHeader` above it now that it's a single trailing item, or drop the header since the item reads as self-explanatory at the bottom of the list. ## Open questions - The **Contacts** section (recipient-autocomplete row, #127-129) isn't mentioned in the requested order. Confirm where it should land — left in its current spot (between Notifications' old position and Appearance) is the safest default absent other guidance, but flag this for confirmation rather than silently guessing. ## Scope - [ ] Reorder the top-level sections in `SettingsScreen.kt` per the list above. - [ ] Rename `settings_backup` ("Backup" → "Settings Backup") and `settings_new_mail` ("New-mail notifications" → "New mail notifications") in `res/values/strings.xml`. - [ ] Add the two-line Appearance subtext (new string resource) under the `settings_appearance` `SectionHeader`. - [ ] Resolve the Contacts-section placement and the Diagnostics-header question above before or during implementation. ## Acceptance criteria - Settings screen renders sections in the order specified, with the renamed headers and the new Appearance subtext. - No functional change to any toggle/radio behavior — this is a presentation/ordering pass only. ## Relevant files - `ui/settings/SettingsScreen.kt`, `ui/settings/SettingsComponents.kt` (`RetentionSection`), `res/values/strings.xml`. ## Dependencies Coordinate with #162 (Advanced Settings hierarchy — moves Background battery usage into this list, just above Storage on this device).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMail#158