Skip to content

Inline writable numerics in device settings — match iOS Settings idiom #31

@tashda

Description

@tashda

Problem

The state/action card surfaces a lot of value for fans, but the per-feature settings underneath it currently render writable numerics as a row that pushes a separate NumericDetailView containing only a slider. Tapping a "Speed", "Timer", etc. row to land on a near-empty page just to drag a slider is clunky — and inconsistent with how iOS Settings exposes numerics (Display & Brightness, Accessibility → Display & Text Size, etc., where sliders sit inline within the same grouped section).

The card itself is good and is out of scope — only the settings sections under the card need to change.

Goal

Make the settings sections under the fan card look and behave like native iOS Settings:

  • Toggles inline (already done).
  • Pickers/enums use the native Picker (already done).
  • Writable numerics render the slider inline within the same List row — label + current value on top, slider beneath — instead of pushing a detail screen.
  • Read-only numerics keep showing label + value as a plain row.
  • Indexed groups (e.g. gradient_scene_*) keep their current "drill-in" affordance — those genuinely need their own page.

Scope

Start with fans. Once it looks right and tests pass, we'll roll the same pattern to lights / covers / climate / generic exposes in a follow-up.

Acceptance criteria

  • A writable numeric setting under the fan card (e.g. replace_filter_age minutes, schedule timers) shows label + value + slider inline; tapping the row does not push a new screen.
  • Read-only numerics still display label + value, no chevron, no push.
  • Toggles and enum pickers are unchanged.
  • The hero card and filter card are untouched.
  • Tests cover: writable numeric renders an inline Slider; row does not behave as a NavigationLink.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions