diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index 1971a9b7f1f5..c9d59ee46c81 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -558,19 +558,26 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # Shopping list panel was replaced by todo panel in 2023.11 hass.http.register_redirect("/shopping-list", "/todo") - # Developer tools moved to config panel in 2026.2 - for url in ( - "/developer-tools", - "/developer-tools/yaml", - "/developer-tools/state", - "/developer-tools/action", - "/developer-tools/template", - "/developer-tools/event", - "/developer-tools/statistics", - "/developer-tools/assist", - "/developer-tools/debug", + # Developer tools moved to config in 2026.2 and was renamed to + # "Tools" (/config/tools) in 2026.8. Redirect both the original + # top-level URLs and the 2026.2 config URLs to the new location. + for suffix in ( + "", + "/yaml", + "/state", + "/action", + "/template", + "/event", + "/statistics", + "/assist", + "/debug", ): - hass.http.register_redirect(url, f"/config{url}") + hass.http.register_redirect( + f"/developer-tools{suffix}", f"/config/tools{suffix}" + ) + hass.http.register_redirect( + f"/config/developer-tools{suffix}", f"/config/tools{suffix}" + ) hass.http.app.router.register_resource(IndexView(repo_path, hass)) diff --git a/homeassistant/components/mqtt/strings.json b/homeassistant/components/mqtt/strings.json index 530b81eab9da..79000ba6e566 100644 --- a/homeassistant/components/mqtt/strings.json +++ b/homeassistant/components/mqtt/strings.json @@ -1137,7 +1137,7 @@ }, "issues": { "invalid_platform_config": { - "description": "Home Assistant detected an invalid config for a manually configured item.\n\nPlatform domain: **{domain}**\nConfiguration file: **{config_file}**\nNear line: **{line}**\nConfiguration found:\n```yaml\n{config}\n```\nError: **{error}**.\n\nMake sure the configuration is valid and [reload](/config/developer-tools/yaml) the manually configured MQTT items or restart Home Assistant to fix this issue.", + "description": "Home Assistant detected an invalid config for a manually configured item.\n\nPlatform domain: **{domain}**\nConfiguration file: **{config_file}**\nNear line: **{line}**\nConfiguration found:\n```yaml\n{config}\n```\nError: **{error}**.\n\nMake sure the configuration is valid and [reload](/config/tools/yaml) the manually configured MQTT items or restart Home Assistant to fix this issue.", "title": "Invalid config found for MQTT {domain} item" }, "protocol_5_migration": { diff --git a/tests/components/frontend/test_init.py b/tests/components/frontend/test_init.py index ebe0489424ff..69ad5e048bf1 100644 --- a/tests/components/frontend/test_init.py +++ b/tests/components/frontend/test_init.py @@ -958,13 +958,24 @@ async def test_get_version( ("from_url", "to_url", "expected_status"), [ ("/.well-known/change-password", "/profile", 302), - ("/developer-tools", "/config/developer-tools", 301), - ("/developer-tools/yaml", "/config/developer-tools/yaml", 301), - ("/developer-tools/state", "/config/developer-tools/state", 301), - ("/developer-tools/action", "/config/developer-tools/action", 301), - ("/developer-tools/template", "/config/developer-tools/template", 301), - ("/developer-tools/event", "/config/developer-tools/event", 301), - ("/developer-tools/debug", "/config/developer-tools/debug", 301), + ("/developer-tools", "/config/tools", 301), + ("/developer-tools/yaml", "/config/tools/yaml", 301), + ("/developer-tools/state", "/config/tools/state", 301), + ("/developer-tools/action", "/config/tools/action", 301), + ("/developer-tools/template", "/config/tools/template", 301), + ("/developer-tools/event", "/config/tools/event", 301), + ("/developer-tools/statistics", "/config/tools/statistics", 301), + ("/developer-tools/assist", "/config/tools/assist", 301), + ("/developer-tools/debug", "/config/tools/debug", 301), + ("/config/developer-tools", "/config/tools", 301), + ("/config/developer-tools/yaml", "/config/tools/yaml", 301), + ("/config/developer-tools/state", "/config/tools/state", 301), + ("/config/developer-tools/action", "/config/tools/action", 301), + ("/config/developer-tools/template", "/config/tools/template", 301), + ("/config/developer-tools/event", "/config/tools/event", 301), + ("/config/developer-tools/statistics", "/config/tools/statistics", 301), + ("/config/developer-tools/assist", "/config/tools/assist", 301), + ("/config/developer-tools/debug", "/config/tools/debug", 301), ("/shopping-list", "/todo", 301), ], )