Skip to content

Document next_flow in async_create_entry in RepairsFlow#2985

Open
iluvdata wants to merge 6 commits intohome-assistant:masterfrom
iluvdata:master
Open

Document next_flow in async_create_entry in RepairsFlow#2985
iluvdata wants to merge 6 commits intohome-assistant:masterfrom
iluvdata:master

Conversation

@iluvdata
Copy link
Copy Markdown

@iluvdata iluvdata commented Mar 7, 2026

Proposed change

Type of change

  • Document existing features within Home Assistant
  • Document new or changing features for which there is an existing pull request elsewhere
  • Spelling or grammatical corrections, or rewording for improved clarity
  • Changes to the backend of this documentation
  • Remove stale or deprecated documentation

Checklist

  • I have read and followed the documentation guidelines.
  • I have verified that my changes render correctly in the documentation.

Additional information

Summary by CodeRabbit

  • Documentation
    • Added guidance showing how repair flows can forward completed fixes into entry/config/options/subentry reconfiguration flows, with examples.
    • Clarified that forwarding is only supported for reconfiguration contexts and that repairs should not start new config/options/subentry flows.
    • Documented next-flow lifecycle behavior, including the need to explicitly remove the original issue after a successful repair.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 7, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: bd5a6f04-50c9-4597-8248-6f36c2c859c3

📥 Commits

Reviewing files that changed from the base of the PR and between ea8b9cb and aa9cfd6.

📒 Files selected for processing (1)
  • docs/core/platform/repairs.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/core/platform/repairs.md

📝 Walkthrough

Walkthrough

Updated docs/core/platform/repairs.md to use RepairsFlowResult return types, adjust imports, and add guidance and examples for repair flows that forward completed issue fixes via next_flow into entry/config/options/subentry reconfiguration. Clarifies next_flow restrictions and lifecycle responsibilities for deleting issues after repair.

Changes

Cohort / File(s) Summary
Documentation
docs/core/platform/repairs.md
Reworked examples to return RepairsFlowResult from async_step_init/async_step_confirm; replaced data_entry_flow import with RepairsFlowResult. Added ~71 lines describing next_flow forwarding into entry/config/options/subentry flows (examples using FlowType and flow_id, SubentryFlowContext with SOURCE_RECONFIGURE, and returning next_flow with FlowType.CONFIG_SUBENTRIES_FLOW). Documented that next_flow for FlowType.CONFIG_FLOW and FlowType.CONFIG_SUBENTRIES_FLOW only supports SOURCE_RECONFIGURE, that issue repairs must not redirect to new config/options/subentry flows, and added a next_flow lifecycle section requiring explicit issue deletion (example showing ir.async_delete_issue(...)). Also adjusted imports and small wording/line changes (total +97/-4).

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description follows the required template with the 'Document new or changing features' type selected and checklist items marked complete, but the 'Proposed change' section is empty. Fill in the 'Proposed change' section to explain the big picture of what is being documented and why this documentation is needed.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: documenting next_flow functionality in async_create_entry within RepairsFlow.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (2)
docs/core/platform/repairs.md (2)

136-136: Remove trailing whitespace.

Lines 136, 138, 160, and 162 have trailing whitespace after the commas. Consider removing these for cleaner formatting.

✨ Remove trailing spaces
-            return self.async_create_entry(
-                title="", data={}, 
-                next_flow=(
-                    FlowType.CONFIG_SUBENTRIES_FLOW, 
+            return self.async_create_entry(
+                title="", data={},
+                next_flow=(
+                    FlowType.CONFIG_SUBENTRIES_FLOW,
                     next_flow["flow_id"]
                 )
             )
-return self.async_create_entry(
-    title="", data={}, 
-    next_flow=(
-        FlowType.OPTIONS_FLOW,
+return self.async_create_entry(
+    title="", data={},
+    next_flow=(
+        FlowType.OPTIONS_FLOW,
         next_flow["flow_id"]
     )
 )

Also applies to: 138-138, 160-160, 162-162

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/core/platform/repairs.md` at line 136, Remove the trailing whitespace
after commas in the snippet shown (e.g. the "title=\"\", data={," fragment) on
the affected lines (136, 138, 160, 162); edit those lines to remove the extra
spaces immediately following the commas so they read without trailing spaces
(e.g. "title=\"\", data={}"). Ensure no other trailing spaces remain in the
surrounding lines.

103-103: Remove unused import.

ConfirmRepairFlow is imported on line 103 but not used in the code example. Consider removing it to keep the example focused.

🧹 Remove unused import
-from homeassistant.components.repairs import ConfirmRepairFlow, RepairsFlow
+from homeassistant.components.repairs import RepairsFlow
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/core/platform/repairs.md` at line 103, The import line currently
includes an unused symbol ConfirmRepairFlow; remove ConfirmRepairFlow from the
import so only the used RepairsFlow is imported (i.e., update the import that
reads "from homeassistant.components.repairs import ConfirmRepairFlow,
RepairsFlow" to import only RepairsFlow).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/core/platform/repairs.md`:
- Around line 153-166: The example uses the symbol ConfigFlowResult but it's not
imported; add an import for ConfigFlowResult from homeassistant.config_entries
in the module's imports so the options flow snippet (where async_init is called
and async_create_entry with next_flow is returned) will not raise a NameError.
- Around line 101-147: The example references SubentryFlowContext but does not
import it; add the missing import so the symbol is defined (e.g., import
SubentryFlowContext from the same module that provides subentry APIs) and ensure
the example's imports at the top include SubentryFlowContext so
Issue1RepairFlow.async_step_confirm can call SubentryFlowContext without a
NameError.
- Line 138: The explanatory text incorrectly references
FlowType.SUBENTRIES_FLOW; update that text to use the correct enum member
FlowType.CONFIG_SUBENTRIES_FLOW so it matches the code example (replace any
occurrence of FlowType.SUBENTRIES_FLOW in the explanatory paragraph with
FlowType.CONFIG_SUBENTRIES_FLOW).

---

Nitpick comments:
In `@docs/core/platform/repairs.md`:
- Line 136: Remove the trailing whitespace after commas in the snippet shown
(e.g. the "title=\"\", data={," fragment) on the affected lines (136, 138, 160,
162); edit those lines to remove the extra spaces immediately following the
commas so they read without trailing spaces (e.g. "title=\"\", data={}"). Ensure
no other trailing spaces remain in the surrounding lines.
- Line 103: The import line currently includes an unused symbol
ConfirmRepairFlow; remove ConfirmRepairFlow from the import so only the used
RepairsFlow is imported (i.e., update the import that reads "from
homeassistant.components.repairs import ConfirmRepairFlow, RepairsFlow" to
import only RepairsFlow).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 09eba6b2-0c59-4c94-9758-e0b7e657dcf0

📥 Commits

Reviewing files that changed from the base of the PR and between 974c323 and 29e1d6e.

📒 Files selected for processing (1)
  • docs/core/platform/repairs.md

Comment thread docs/core/platform/repairs.md
Comment thread docs/core/platform/repairs.md Outdated
Comment thread docs/core/platform/repairs.md
Updated context source description for next_flow issue repair flows.
Comment thread docs/core/platform/repairs.md
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/core/platform/repairs.md`:
- Around line 101-147: The example uses vol.Schema({}) in
Issue1RepairFlow.async_step_confirm but never imports voluptuous; add the
missing top-level import "import voluptuous as vol" alongside the other imports
so vol.Schema is defined and the async_step_confirm return self.async_show_form
call works correctly.
- Around line 154-167: The snippet uses an undefined config_entry; change it to
read the entry id from self.data (e.g. assign config_entry_id =
self.data["entry_id"]) and pass that id into
self.hass.config_entries.options.async_init instead of config_entry.entry_id,
then use the returned next_flow in the existing self.async_create_entry call
(keeping FlowType.OPTIONS_FLOW and next_flow["flow_id"]) so the example is
consistent with the earlier snippet.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f620fa80-3d80-4ab5-af81-f0209e897336

📥 Commits

Reviewing files that changed from the base of the PR and between 29e1d6e and 1aa79a1.

📒 Files selected for processing (1)
  • docs/core/platform/repairs.md

Comment thread docs/core/platform/repairs.md
Comment thread docs/core/platform/repairs.md
@iluvdata
Copy link
Copy Markdown
Author

Retested with dev branch of frontend and next flow is no longer working even for config flows. The dialog is created then closed. There were many recent updates to ha-dialog.ts that appears to have broken this. Investigating a frontend patch.

@MartinHjelmare
Copy link
Copy Markdown
Member

Ok, thanks for the update. I'll draft this then.

@MartinHjelmare MartinHjelmare marked this pull request as draft March 12, 2026 11:41
iluvdata added 2 commits April 3, 2026 12:30
Updated return types RepairsFlowResult instead of data_entry_flow.FlowResult. Added notes on issue lifecycle and next_flow usage.
@iluvdata
Copy link
Copy Markdown
Author

iluvdata commented Apr 3, 2026

The bug with ha-dialog.ts has been addressed. There is an additional minor frontend bug fix pending as noted in home-assistant/core#165091.

@iluvdata iluvdata marked this pull request as ready for review April 3, 2026 16:47
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.

2 participants