Skip to content

Native iOS Settings sections beneath every category card for leftover exposes #32

@tashda

Description

@tashda

Problem

Fans render their hero card plus a FanFeatureSections (native List Sections) underneath for any "leftover" exposes — LED, child lock, filter age, etc. The other categories don't follow this pattern:

  • Lights stuff Startup + Other-advanced features behind sheet buttons (sunrise.fill, ellipsis) inside the card.
  • Switches silently drop power_on_behavior, child_lock, indicator config, timers — the card only knows about state + metering.
  • Climate silently drops fan_mode, preset, eco / schedule / valve / calibration features.
  • Covers silently drop calibration / motor-speed style configs.

Result: a lot of meaningful configuration is either hidden in modal sheets or unreachable from the device detail screen.

Goal

Same pattern as fan, applied to every category:

  1. Hero card stays exactly as it is — hero values, primary controls, category-specific affordances (Effects on lights stay as a button — they're a true light-specific control, not configuration).
  2. Anything the hero doesn't bind to a primary control drops down as native iOS Settings Sections beneath the card.
  3. linkquality and identify* are always hidden (they're surfaced on the device card / are noisy diagnostics).

Implementation

  • New shared primitives: Shellbee/Shared/Components/SettingsFormRow.swift (Expose-driven row with inline slider for writable numerics) and Shellbee/Shared/Components/DeviceExtras.swift (eligibility filter with alwaysHidden list).
  • New per-category section views: LightFeatureSections, SwitchFeatureSections, ClimateFeatureSections, CoverFeatureSections.
  • LightControlCard gains a rendersAdvancedSheetsInline: Bool flag (defaults true so snapshot contexts unchanged); DeviceDetailView passes false and emits LightFeatureSections underneath.
  • DeviceDetailView is reorganised around a single heroAndSettingsSections(for:state:) builder that dispatches per category.

Acceptance criteria

  • Light detail no longer shows the sunrise (Startup) and ellipsis (More) buttons inside the card; those features appear as a native "Startup" / "Configuration" section beneath the card. Effects (sparkles) still in the card.
  • Switch / Climate / Cover detail screens surface their previously-hidden configuration as native sections beneath the card.
  • No category surfaces linkquality or identify* in any feature section.
  • Hero cards (visual styling, primary controls) are unchanged.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions