From 686bcb31991bee6d13e326026b637e4ee532b872 Mon Sep 17 00:00:00 2001 From: Norbert Rittel Date: Sat, 21 Feb 2026 11:04:17 +0100 Subject: [PATCH 1/5] Replace "add-on" with "app" in `homeassistant_hardware` (#163696) --- .../homeassistant_hardware/strings.json | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/homeassistant_hardware/strings.json b/homeassistant/components/homeassistant_hardware/strings.json index 644d95e281a51..3545c080e089a 100644 --- a/homeassistant/components/homeassistant_hardware/strings.json +++ b/homeassistant/components/homeassistant_hardware/strings.json @@ -4,16 +4,16 @@ "abort": { "fw_download_failed": "{firmware_name} firmware for your {model} failed to download. Make sure Home Assistant has internet access and try again.", "fw_install_failed": "{firmware_name} firmware failed to install, check Home Assistant logs for more information.", - "not_hassio_thread": "The OpenThread Border Router add-on can only be installed with Home Assistant OS. If you would like to use the {model} as a Thread border router, please manually set up OpenThread Border Router to communicate with it.", - "otbr_addon_already_running": "The OpenThread Border Router add-on is already running, it cannot be installed again.", - "otbr_still_using_stick": "This {model} is in use by the OpenThread Border Router add-on. If you use the Thread network, make sure you have alternative border routers. Uninstall the add-on and try again.", - "unsupported_firmware": "The radio firmware on your {model} could not be determined. Make sure that no other integration or add-on is currently trying to communicate with the device. If you are running Home Assistant OS in a virtual machine or in Docker, please make sure that permissions are set correctly for the device.", + "not_hassio_thread": "The OpenThread Border Router app can only be installed with Home Assistant OS. If you would like to use the {model} as a Thread border router, please manually set up OpenThread Border Router to communicate with it.", + "otbr_addon_already_running": "The OpenThread Border Router app is already running, it cannot be installed again.", + "otbr_still_using_stick": "This {model} is in use by the OpenThread Border Router app. If you use the Thread network, make sure you have alternative border routers. Uninstall the app and try again.", + "unsupported_firmware": "The radio firmware on your {model} could not be determined. Make sure that no other integration or app is currently trying to communicate with the device. If you are running Home Assistant OS in a virtual machine or in Docker, please make sure that permissions are set correctly for the device.", "zha_still_using_stick": "This {model} is in use by the Zigbee Home Automation integration. Please migrate your Zigbee network to another adapter or delete the integration and try again." }, "progress": { "install_firmware": "Installing {firmware_name} firmware.\n\nDo not make any changes to your hardware or software until this finishes.", - "install_otbr_addon": "Installing add-on", - "start_otbr_addon": "Starting add-on" + "install_otbr_addon": "Installing app", + "start_otbr_addon": "Starting app" }, "step": { "confirm_otbr": { @@ -34,7 +34,7 @@ "title": "Updating adapter" }, "otbr_failed": { - "description": "The OpenThread Border Router add-on installation was unsuccessful. Ensure no other software is trying to communicate with the {model}, you have access to the Internet and can install other add-ons, and try again. Check the Supervisor logs if the problem persists.", + "description": "The OpenThread Border Router app installation was unsuccessful. Ensure no other software is trying to communicate with the {model}, you have access to the Internet and can install other apps, and try again. Check the Supervisor logs if the problem persists.", "title": "Failed to set up OpenThread Border Router" }, "pick_firmware": { @@ -89,11 +89,11 @@ "silabs_multiprotocol_hardware": { "options": { "abort": { - "addon_already_running": "Failed to start the {addon_name} add-on because it is already running.", - "addon_info_failed": "Failed to get {addon_name} add-on info.", - "addon_install_failed": "Failed to install the {addon_name} add-on.", + "addon_already_running": "Failed to start the {addon_name} app because it is already running.", + "addon_info_failed": "Failed to get {addon_name} app info.", + "addon_install_failed": "Failed to install the {addon_name} app.", "addon_set_config_failed": "Failed to set {addon_name} configuration.", - "addon_start_failed": "Failed to start the {addon_name} add-on.", + "addon_start_failed": "Failed to start the {addon_name} app.", "not_hassio": "The hardware options can only be configured on Home Assistant OS installations.", "zha_migration_failed": "The ZHA migration did not succeed." }, @@ -101,8 +101,8 @@ "unknown": "[%key:common::config_flow::error::unknown%]" }, "progress": { - "install_addon": "Please wait while the {addon_name} add-on installation finishes. This can take several minutes.", - "start_addon": "Please wait while the {addon_name} add-on start completes. This may take some seconds." + "install_addon": "Please wait while the {addon_name} app installation finishes. This can take several minutes.", + "start_addon": "Please wait while the {addon_name} app start completes. This may take some seconds." }, "step": { "addon_installed_other_device": { @@ -129,7 +129,7 @@ "title": "[%key:component::homeassistant_hardware::silabs_multiprotocol_hardware::options::step::reconfigure_addon::title%]" }, "install_addon": { - "title": "The Silicon Labs Multiprotocol add-on installation has started" + "title": "The Silicon Labs Multiprotocol app installation has started" }, "notify_channel_change": { "description": "A Zigbee and Thread channel change has been initiated and will finish in {delay_minutes} minutes.", @@ -143,7 +143,7 @@ "title": "Reconfigure IEEE 802.15.4 radio multiprotocol support" }, "start_addon": { - "title": "The Silicon Labs Multiprotocol add-on is starting." + "title": "The Silicon Labs Multiprotocol app is starting." }, "uninstall_addon": { "data": { From dc5caf307ba43c9daf2185ea9b08431e4dde0b16 Mon Sep 17 00:00:00 2001 From: Norbert Rittel Date: Sat, 21 Feb 2026 11:04:45 +0100 Subject: [PATCH 2/5] Replace "add-on" with "app" in `zwave_me` (#163698) --- homeassistant/components/zwave_me/config_flow.py | 2 +- homeassistant/components/zwave_me/strings.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/zwave_me/config_flow.py b/homeassistant/components/zwave_me/config_flow.py index d37d76a093bf0..f28788d8d9be2 100644 --- a/homeassistant/components/zwave_me/config_flow.py +++ b/homeassistant/components/zwave_me/config_flow.py @@ -38,7 +38,7 @@ async def async_step_user( "-cc2b-3b61-1898181b9950" ), "local_url": "ws://192.168.1.39:8083", - "add_on_url": "ws://127.0.0.1:8083", + "app_url": "ws://127.0.0.1:8083", "find_url": "wss://find.z-wave.me", "remote_url": "wss://87.250.250.242:8083", } diff --git a/homeassistant/components/zwave_me/strings.json b/homeassistant/components/zwave_me/strings.json index 3b7e1033c09ba..6021bf08f05f9 100644 --- a/homeassistant/components/zwave_me/strings.json +++ b/homeassistant/components/zwave_me/strings.json @@ -13,7 +13,7 @@ "token": "[%key:common::config_flow::data::api_token%]", "url": "[%key:common::config_flow::data::url%]" }, - "description": "Input IP address with port and access token of Z-Way server. To get the token go to the Z-Way user interface Smart Home UI > Menu > Settings > Users > Administrator > API token.\n\nExample of connecting to Z-Way running as an add-on:\nURL: {add_on_url}\nToken: {local_token}\n\nExample of connecting to Z-Way in the local network:\nURL: {local_url}\nToken: {local_token}\n\nExample of connecting to Z-Way via remote access find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nExample of connecting to Z-Way with a static public IP address:\nURL: {remote_url}\nToken: {local_token}\n\nWhen connecting via find.z-wave.me you need to use a token with a global scope (log in to Z-Way via find.z-wave.me for this)." + "description": "Input IP address with port and access token of Z-Way server. To get the token go to the Z-Way user interface Smart Home UI > Menu > Settings > Users > Administrator > API token.\n\nExample of connecting to Z-Way running as an app:\nURL: {app_url}\nToken: {local_token}\n\nExample of connecting to Z-Way in the local network:\nURL: {local_url}\nToken: {local_token}\n\nExample of connecting to Z-Way via remote access find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nExample of connecting to Z-Way with a static public IP address:\nURL: {remote_url}\nToken: {local_token}\n\nWhen connecting via find.z-wave.me you need to use a token with a global scope (log in to Z-Way via find.z-wave.me for this)." } } } From 452b0775ee0062f41ce445ced60447fbf718c8f9 Mon Sep 17 00:00:00 2001 From: Josef Zweck Date: Sat, 21 Feb 2026 11:13:23 +0100 Subject: [PATCH 3/5] Revert "Replace "add-on" with "app" in `zwave_me`" (#163701) --- homeassistant/components/zwave_me/config_flow.py | 2 +- homeassistant/components/zwave_me/strings.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/zwave_me/config_flow.py b/homeassistant/components/zwave_me/config_flow.py index f28788d8d9be2..d37d76a093bf0 100644 --- a/homeassistant/components/zwave_me/config_flow.py +++ b/homeassistant/components/zwave_me/config_flow.py @@ -38,7 +38,7 @@ async def async_step_user( "-cc2b-3b61-1898181b9950" ), "local_url": "ws://192.168.1.39:8083", - "app_url": "ws://127.0.0.1:8083", + "add_on_url": "ws://127.0.0.1:8083", "find_url": "wss://find.z-wave.me", "remote_url": "wss://87.250.250.242:8083", } diff --git a/homeassistant/components/zwave_me/strings.json b/homeassistant/components/zwave_me/strings.json index 6021bf08f05f9..3b7e1033c09ba 100644 --- a/homeassistant/components/zwave_me/strings.json +++ b/homeassistant/components/zwave_me/strings.json @@ -13,7 +13,7 @@ "token": "[%key:common::config_flow::data::api_token%]", "url": "[%key:common::config_flow::data::url%]" }, - "description": "Input IP address with port and access token of Z-Way server. To get the token go to the Z-Way user interface Smart Home UI > Menu > Settings > Users > Administrator > API token.\n\nExample of connecting to Z-Way running as an app:\nURL: {app_url}\nToken: {local_token}\n\nExample of connecting to Z-Way in the local network:\nURL: {local_url}\nToken: {local_token}\n\nExample of connecting to Z-Way via remote access find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nExample of connecting to Z-Way with a static public IP address:\nURL: {remote_url}\nToken: {local_token}\n\nWhen connecting via find.z-wave.me you need to use a token with a global scope (log in to Z-Way via find.z-wave.me for this)." + "description": "Input IP address with port and access token of Z-Way server. To get the token go to the Z-Way user interface Smart Home UI > Menu > Settings > Users > Administrator > API token.\n\nExample of connecting to Z-Way running as an add-on:\nURL: {add_on_url}\nToken: {local_token}\n\nExample of connecting to Z-Way in the local network:\nURL: {local_url}\nToken: {local_token}\n\nExample of connecting to Z-Way via remote access find.z-wave.me:\nURL: {find_url}\nToken: {find_token}\n\nExample of connecting to Z-Way with a static public IP address:\nURL: {remote_url}\nToken: {local_token}\n\nWhen connecting via find.z-wave.me you need to use a token with a global scope (log in to Z-Way via find.z-wave.me for this)." } } } From 99ca425ad099c80636ef48c2513e84282e03f730 Mon Sep 17 00:00:00 2001 From: Erwin Douna Date: Sat, 21 Feb 2026 11:53:03 +0100 Subject: [PATCH 4/5] Bump pyportainer 1.0.28 (#163700) --- homeassistant/components/portainer/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/portainer/manifest.json b/homeassistant/components/portainer/manifest.json index cf3ff3d891183..3bcb4a6fc562b 100644 --- a/homeassistant/components/portainer/manifest.json +++ b/homeassistant/components/portainer/manifest.json @@ -7,5 +7,5 @@ "integration_type": "service", "iot_class": "local_polling", "quality_scale": "bronze", - "requirements": ["pyportainer==1.0.27"] + "requirements": ["pyportainer==1.0.28"] } diff --git a/requirements_all.txt b/requirements_all.txt index 26ebb1dabfa98..be85f49ec8a5a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2364,7 +2364,7 @@ pyplaato==0.0.19 pypoint==3.0.0 # homeassistant.components.portainer -pyportainer==1.0.27 +pyportainer==1.0.28 # homeassistant.components.probe_plus pyprobeplus==1.1.2 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index a9ce589814458..2bef9d9271a7d 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -2014,7 +2014,7 @@ pyplaato==0.0.19 pypoint==3.0.0 # homeassistant.components.portainer -pyportainer==1.0.27 +pyportainer==1.0.28 # homeassistant.components.probe_plus pyprobeplus==1.1.2 From 9b4d20936120a0c10cbbcbcd63aa97f545c2607a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Costa?= Date: Sat, 21 Feb 2026 12:55:34 +0000 Subject: [PATCH 5/5] Add translated reasons to Govee Light Local setup failures (#163576) --- .../components/govee_light_local/__init__.py | 12 +++++++++--- .../components/govee_light_local/strings.json | 8 ++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/govee_light_local/__init__.py b/homeassistant/components/govee_light_local/__init__.py index 4315f5d5363d8..509a8c0137f8e 100644 --- a/homeassistant/components/govee_light_local/__init__.py +++ b/homeassistant/components/govee_light_local/__init__.py @@ -15,7 +15,7 @@ from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady -from .const import DISCOVERY_TIMEOUT +from .const import DISCOVERY_TIMEOUT, DOMAIN from .coordinator import GoveeLocalApiCoordinator, GoveeLocalConfigEntry PLATFORMS: list[Platform] = [Platform.LIGHT] @@ -52,7 +52,11 @@ async def await_cleanup(): _LOGGER.error("Start failed, errno: %d", ex.errno) return False _LOGGER.error("Port %s already in use", LISTENING_PORT) - raise ConfigEntryNotReady from ex + raise ConfigEntryNotReady( + translation_domain=DOMAIN, + translation_key="port_in_use", + translation_placeholders={"port": LISTENING_PORT}, + ) from ex await coordinator.async_config_entry_first_refresh() @@ -61,7 +65,9 @@ async def await_cleanup(): while not coordinator.devices: await asyncio.sleep(delay=1) except TimeoutError as ex: - raise ConfigEntryNotReady from ex + raise ConfigEntryNotReady( + translation_domain=DOMAIN, translation_key="no_devices_found" + ) from ex entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) diff --git a/homeassistant/components/govee_light_local/strings.json b/homeassistant/components/govee_light_local/strings.json index 15140f174dc03..afa664d1ae04a 100644 --- a/homeassistant/components/govee_light_local/strings.json +++ b/homeassistant/components/govee_light_local/strings.json @@ -33,5 +33,13 @@ } } } + }, + "exceptions": { + "no_devices_found": { + "message": "[%key:common::config_flow::abort::no_devices_found%]" + }, + "port_in_use": { + "message": "Port {port} is already in use" + } } }