Skip to content

feat: split options flow into 5-step wizard with room presets#1450

Open
florianhorner wants to merge 5 commits intobasnijholt:mainfrom
florianhorner:feat/config-wizard
Open

feat: split options flow into 5-step wizard with room presets#1450
florianhorner wants to merge 5 commits intobasnijholt:mainfrom
florianhorner:feat/config-wizard

Conversation

@florianhorner
Copy link

Summary

Replaces the single 38-option configuration form with a 5-step progressive disclosure wizard:

  1. Essentials — lights, brightness range, color temp range, room preset
  2. Sleep Mode — sleep brightness, color, transition
  3. Sun & Timing — sunrise/sunset tracking, brightness curves
  4. Behavior — manual control, interception, take-over settings
  5. Device Workarounds — split commands, delays, redundancy skipping

Room presets

One-click setup via dropdown: Bedroom, Office, Living Room, Nursery. Each applies sensible defaults for brightness, color temp, and transitions. Cross-step preset values (e.g., sleep settings from a bedroom preset) are carried forward automatically.

Dependency validation

The UI now catches config conflicts immediately:

  • detect_non_ha_changes and adapt_only_on_bare_turn_on require take_over_control
  • multi_light_intercept requires intercept
  • send_split_delay > 0 requires separate_turn_on_commands
  • Brightness and color temp ranges validated (min ≤ max)

Tests

16 tests covering the full wizard flow, preset application, dependency validation, range validation, and YAML import guard.

Depends on

This PR builds on the description rewrites in #1446. When #1446 merges first, this PR may have merge conflicts in translation files — resolve by keeping this PR's versions (they already incorporate the cleaner descriptions).

Test plan

  • Walk through all 5 wizard steps in HA UI
  • Select bedroom preset, verify defaults applied
  • Enable detect_non_ha_changes without take_over_control, verify error shown
  • Set min_brightness > max_brightness, verify error shown
  • Run pytest tests/test_config_flow.py

🤖 Generated with Claude Code

Florian Horner and others added 5 commits March 18, 2026 02:23
Replace the single 38-option form with a progressive disclosure wizard:
Essentials → Sleep → Sun & Timing → Behavior → Device Workarounds.

Adds room presets (Bedroom/Office/Living Room/Nursery) for one-click
setup, dependency validation between options, and range validation
for brightness and color temperature.

Restructures all 37 translation files into per-step groupings with
new error keys. Includes 16 tests covering the full wizard flow,
preset application, and all validation paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Covers the color temperature range check in config_flow.py that was
missing a corresponding test (brightness range already had one).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Derive preset selector options from ROOM_PRESETS keys instead of
  hardcoding the list
- Add DOCS entry for CONF_ROOM_PRESET as single source of truth
- Guard EntitySelector construction to only run when lights step active
- Use set for step_keys lookup in validate_options (O(1) vs O(n))
- Simplify update-strings.py with setdefault chains and cached dicts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant