ha-deploy-kit 0.1.2__tar.gz → 0.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/CHANGELOG.md +14 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/PKG-INFO +1 -1
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/pyproject.toml +1 -1
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/ha/repairs_flow.py +9 -9
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/ha/test_repairs_flow.py +4 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/.coveragerc-ha +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/.github/workflows/release.yml +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/.github/workflows/validate.yml +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/.gitignore +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/LICENSE +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/README.md +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/docs/adopting.md +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/docs/configuration.md +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/docs/install.md +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/docs/releasing.md +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/backend_only/.env.example +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/backend_only/deploy.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/backend_only/deploy.sh +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/frontend_card/.env.example +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/frontend_card/deploy.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/frontend_card/deploy.sh +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/frontend_card/ha_adapter.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/synthetic_widget/deploy.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/examples/synthetic_widget/ha_adapter.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/__init__.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/cli.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/comparison.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/config.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/frontend.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/ha/__init__.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/ha/repairs_issue.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/ha/service.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/ha/serving.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/inventory.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/metadata/services.yaml.tmpl +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/metadata/strings.snippet.fixflow.json +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/metadata/strings.snippet.json +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/notify.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/settings.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/transport.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/conftest.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/ha/conftest.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/ha/test_example_adapters.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/ha/test_real_http_to_service.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/ha/test_repairs_issue.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/ha/test_service.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/ha/test_serving.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_cli.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_comparison.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_config.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_frontend.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_installed_smoke.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_inventory.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_multi_consumer.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_notify.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_packaging.py +0 -0
- {ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/tests/test_transport.py +0 -0
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.1.3 (2026-10-29)
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
- **ha**: Show restart confirmation without an empty schema
|
|
9
|
+
([`c6de7bb`](https://github.com/latrekc-meta/ha-deploy-kit/commit/c6de7bba87c0116d137a5cac918a5a050763ef59))
|
|
10
|
+
|
|
11
|
+
HA's Repairs frontend auto-submits a form that has an empty data schema, so
|
|
12
|
+
async_show_form(step_id=..., data_schema=vol.Schema({})) restarted Home Assistant the instant the
|
|
13
|
+
user opened the issue -- no confirmation. Show the form with no data schema (as in the proven
|
|
14
|
+
hand-rolled flow) so HA renders a confirmation that waits for an explicit submit. Add a regression
|
|
15
|
+
guard asserting data_schema is None.
|
|
16
|
+
|
|
17
|
+
|
|
4
18
|
## v0.1.2 (2026-10-29)
|
|
5
19
|
|
|
6
20
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ha-deploy-kit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: HA-free SSH deploy / compare / notify / optional-frontend toolkit for Home Assistant custom components
|
|
5
5
|
Project-URL: Homepage, https://github.com/latrekc-meta/ha-deploy-kit
|
|
6
6
|
Project-URL: Repository, https://github.com/latrekc-meta/ha-deploy-kit
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ha-deploy-kit"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.3"
|
|
8
8
|
description = "HA-free SSH deploy / compare / notify / optional-frontend toolkit for Home Assistant custom components"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
"""Optional opt-in confirm-and-restart Repairs flow.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
the
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Opening the Repairs issue shows a confirmation dialog; the restart happens ONLY
|
|
4
|
+
when the user submits it. The form is shown WITHOUT a data schema: Home Assistant
|
|
5
|
+
renders a confirmation that waits for the user. (An empty ``vol.Schema({})`` has
|
|
6
|
+
no fields, so the frontend auto-submits it and restarts immediately -- that is the
|
|
7
|
+
bug this avoids.) No executable restart lives in the core engine; this flow is the
|
|
8
|
+
single opt-in place a consumer may wire it.
|
|
7
9
|
"""
|
|
8
10
|
|
|
9
11
|
from __future__ import annotations
|
|
10
12
|
|
|
11
13
|
from typing import TYPE_CHECKING, Any
|
|
12
14
|
|
|
13
|
-
import voluptuous as vol
|
|
14
15
|
from homeassistant.components.repairs import RepairsFlow
|
|
15
16
|
|
|
16
17
|
if TYPE_CHECKING:
|
|
@@ -30,10 +31,9 @@ class _RestartRequiredFixFlow(RepairsFlow):
|
|
|
30
31
|
self, user_input: dict[str, Any] | None = None
|
|
31
32
|
) -> FlowResult:
|
|
32
33
|
if user_input is None:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
await self.hass.services.async_call("homeassistant", "restart", blocking=False)
|
|
34
|
+
# No data schema: HA renders a confirmation that waits for submit.
|
|
35
|
+
return self.async_show_form(step_id="confirm_restart")
|
|
36
|
+
await self.hass.services.async_call("homeassistant", "restart")
|
|
37
37
|
return self.async_create_entry(title="", data={})
|
|
38
38
|
|
|
39
39
|
|
|
@@ -16,6 +16,10 @@ async def test_showing_the_form_never_restarts(hass):
|
|
|
16
16
|
shown = await flow.async_step_init()
|
|
17
17
|
assert shown["type"] == "form"
|
|
18
18
|
assert shown["step_id"] == "confirm_restart"
|
|
19
|
+
# No data schema: HA must render a confirmation that WAITS for submit. An
|
|
20
|
+
# empty vol.Schema({}) would be auto-submitted by the frontend and restart
|
|
21
|
+
# immediately -- guard against that regression.
|
|
22
|
+
assert shown["data_schema"] is None
|
|
19
23
|
assert len(calls) == 0 # merely showing the confirmation dialog never restarts
|
|
20
24
|
|
|
21
25
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ha_deploy_kit-0.1.2 → ha_deploy_kit-0.1.3}/src/ha_deploy_kit/metadata/strings.snippet.fixflow.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|