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.
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
NumericDetailViewcontaining 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:
Picker(already done).Listrow — label + current value on top, slider beneath — instead of pushing a detail screen.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
replace_filter_ageminutes, schedule timers) shows label + value + slider inline; tapping the row does not push a new screen.Slider; row does not behave as aNavigationLink.