feat: progressive config flow — from 40 flat options to 5 guided steps#1447
Closed
florianhorner wants to merge 13 commits intobasnijholt:mainfrom
Closed
feat: progressive config flow — from 40 flat options to 5 guided steps#1447florianhorner wants to merge 13 commits intobasnijholt:mainfrom
florianhorner wants to merge 13 commits intobasnijholt:mainfrom
Conversation
Introduce STEP_OPTIONS mapping to partition VALIDATION_TUPLES across five config flow steps, ROOM_PRESETS with sensible defaults for bedroom/office/living_room/nursery, and CONF_ROOM_PRESET constant.
Replace the single monolithic options page with a guided wizard: Essentials → Sleep Mode → Sun & Timing → Behavior → Device Workarounds. Each step includes contextual validation (brightness range, color temp range, sunrise/sunset ordering, dependency checks for take_over_control and intercept). Room preset selector pre-fills sensible defaults.
…ions Replace emoji-heavy, jargon-laden descriptions with concise plain-English explanations organized across the five new options steps. Add new error messages for validation. Restructure all 38 translation files to match the new step layout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
for more information, see https://pre-commit.ci
Dead code flagged by pre-landing review. Step ordering is implicit in the method call chain; the validation map was never referenced.
Four interactive HTML mockups showing the visual improvements: - before-after-mockup: label+tooltip pattern vs old cramped labels - mockup-wizard-flow: 40-option wall vs 5-step wizard - mockup-room-presets: preset dropdown pre-filling fields - mockup-validation: contextual inline validation errors
Author
|
Cleaning up — the earlier comment was a test, please ignore. |
String comparison of time values ("9:00:00" >= "10:00:00") gives wrong
results for non-zero-padded hours. Parse with datetime.time.fromisoformat()
before comparing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
for more information, see https://pre-commit.ci
Screenshots from manual QA on ha.horner.io showing all 5 config flow steps working correctly on a real Home Assistant instance. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
for more information, see https://pre-commit.ci
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Author
|
Closing in favor of the split PR chain: #1446 (copy/strings) → #1448 (sync tests) → #1450 (wizard implementation). This PR was the original monolithic spike that explored the 5-step wizard and presets. Since the work has now been broken into smaller, more reviewable pieces, the feature set from this PR is effectively covered by #1450 — but in a way that reduces merge conflicts and makes review/maintenance easier. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
detect_non_ha_changesrequirestake_over_control)data_descriptionfor per-field help textdatetime.timeobjects instead of lexicographic string comparisonMotivation
The current options page shows ~40 options on a single flat page, which is the #1 user frustration identified across GitHub issues. Most users only need to pick lights and set brightness/color ranges — they shouldn't need to scroll past
brightness_mode_time_darkormulti_light_interceptto do that.QA Evidence — Live Testing on Home Assistant
Deployed branch to a live HA instance and walked through all 5 steps:
Step 1: Essentials
Room preset dropdown, light selector, brightness/color temp ranges, transition.

Step 2: Sleep Mode
Sleep brightness, color temp, RGB color, sleep transition, adapt until sleep.

Step 3: Sun & Timing
Sunrise/sunset times and offsets, interval, brightness mode settings.

Step 4: Behavior
Manual control, take over, detect non-HA changes, intercept settings.

Step 5: Device Workarounds
Separate turn on commands, split delay, config in attributes.

Flow Completion
All 5 steps submitted successfully, config entry saved.

Pre-Landing Review
No issues found.
Test plan
homeassistant— not available locally)🤖 Generated with Claude Code