From b4b4cad111d502bec823899793cb6f879acfe0bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Nov 2025 07:22:21 +0100 Subject: [PATCH 01/49] build(deps-dev): bump webrick from 1.9.1 to 1.9.2 (#42001) --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c1e8576786a..b43d66596f6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -167,7 +167,7 @@ GEM tzinfo-data (1.2025.2) tzinfo (>= 1.0.0) unicode-display_width (2.6.0) - webrick (1.9.1) + webrick (1.9.2) PLATFORMS arm64-darwin-23 From a8056b7e0f840df863c8ec12d4e58411862a9349 Mon Sep 17 00:00:00 2001 From: sevorl <81764300+sevorl@users.noreply.github.com> Date: Thu, 27 Nov 2025 18:02:34 +0100 Subject: [PATCH 02/49] Update Feasycom product links in ibeacon markdown (#42003) --- source/_integrations/ibeacon.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/ibeacon.markdown b/source/_integrations/ibeacon.markdown index c984360909c..32559955450 100644 --- a/source/_integrations/ibeacon.markdown +++ b/source/_integrations/ibeacon.markdown @@ -74,10 +74,10 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr - Blue Charm Beacons BC037G-GeoPattern-iBeacon (discontinued) - Blue Charm Beacons BC037S-SmoothPattern-iBeacon (discontinued) - [Blue SLIM ID](https://elainnovation.com/en/catalogue/blue-slim-id-en/) -- [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531) -- [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon) +- [Feasycom FSC-BP103B](https://www.feasycom.com/product/fsc-bp103b/) +- [Feasycom FSC-BP104D](https://www.feasycom.com/product/fsc-bp104d/) - [Feasycom FSC-BP106](https://www.feasycom.com/fsc-bp106) -- [Feasycom FSC-BP108](https://www.feasycom.com/bluetooth-5-1-waterproof-bluetooth-beacon) +- [Feasycom FSC-BP108](https://www.feasycom.com/product/fsc-bp108b/) - [MikroTik TG-BT5-IN](https://mikrotik.com/product/tg_bt5_in) (Additional sensors such as angle or impact are not compatible) - [NRF51822 iBeacon](https://www.aliexpress.com/item/32826502025.html) - [NRF52810 iBeacon](https://www.aliexpress.com/item/1005003211033416.html) From 882c83ca1a07c9568f21f7fdf40cedf7f3d32b44 Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Thu, 27 Nov 2025 19:26:58 +0100 Subject: [PATCH 03/49] Thread: migrate to a new adapter (#42007) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Franck Nijhof --- source/_integrations/thread.markdown | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/source/_integrations/thread.markdown b/source/_integrations/thread.markdown index a846102824c..341c022e883 100644 --- a/source/_integrations/thread.markdown +++ b/source/_integrations/thread.markdown @@ -201,6 +201,44 @@ Note: the steps and images here show the process with a Google Thread network. B ![image](/images/integrations/thread/thread-ha-preferred.png) - 🎉 You successfully created a Home Assistant Thread network and joined it with a pre-existing third-party network. +## Migrating a Thread network to a new adapter + +Follow these steps if you already have a Thread adapter running but want to switch to a new adapter. + +### Prerequisites + +- [Home Assistant Operating System](/docs/glossary/#home-assistant-operating-system) installed on your smart home hub. For example: + - on a Home Assistant Green, where Home Assistant OS is preinstalled + - On a Home Assistant Yellow or on a Raspberry Pi +- Existing Thread adapter connected to your Home Assistant hub +- Latest updates installed +- A new Thread adapter and a USB extension cable + - If your adapter supports multiple protocols: + - They might have another firmware installed by default (Zigbee, for example). + - Check their documentation and install the OpenThread firmware on the adapter. + - Check their documentation and take a note of the baudrate. +- Thread devices + +### To migrate an existing Thread network to a new adapter + +1. Plug the new adapter into the extension cable and plug it into the Home Assistant hub. +2. Go to {% my supervisor_addon title="**Settings** > **Add-ons** > **OpenThread Border Router**" addon="core_openthread_border_router" %} and select the **Configuration** tab. +3. Under **Devices**, select your adapter. +4. Enter the **Baudrate** as specified in the documentation of your adapter. + - If you can't find the baudrate, contact the manufacturer's support. + - If you're feeling lucky, try `460800`. + - **Save** your changes. + - **Troubleshooting**: + - Check the logs. + - If the add-on crashes or fails to communicate with the Thread integration: Disable the **Hardware flow control** option and try again. +5. Restart the add-on and check the logs. Wait. + - **Info**: Your Thread network is managed by Home Assistant. It is not stored on the adapter. Migrating the adapter means that Home Assistant will start to use your new adapter's radio instead of the old one. +6. Go to {% my integrations title="**Settings** > **Devices & services**" %}, select the **Thread** integration. + - Select the cogwheel {% icon "mdi:cog-outline" %}. + - **Result**: You should now see that the Thread network is still there. + - **Troubleshooting**: If you don't see the network there, go back to the add-on configuration and adjust your settings, if needed and try again. +7. If you no longer want to use the old adapter, you can unplug it now. + ## Understanding the Thread configuration page This section explains why you might see multiple networks on the Thread configuration page and what this means for your network. From 4fcfdb08b751bf299c173d15959377d4a27a2f8c Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Thu, 27 Nov 2025 19:57:23 +0100 Subject: [PATCH 04/49] Thread migration: add link to ZBT-2 documentation (#42010) --- source/_integrations/thread.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/thread.markdown b/source/_integrations/thread.markdown index 341c022e883..b4c03e505e4 100644 --- a/source/_integrations/thread.markdown +++ b/source/_integrations/thread.markdown @@ -205,6 +205,8 @@ Note: the steps and images here show the process with a Google Thread network. B Follow these steps if you already have a Thread adapter running but want to switch to a new adapter. +If you want to migrate to a Home Assistant Connect ZBT-2, follow the steps in the [Home Assistant Connect ZBT-2 documentation](https://support.nabucasa.com/hc/en-us/articles/32087461954589). + ### Prerequisites - [Home Assistant Operating System](/docs/glossary/#home-assistant-operating-system) installed on your smart home hub. For example: From 220a37e867b4c41a5733b78088df8b9de99a69e8 Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Thu, 27 Nov 2025 20:05:20 +0100 Subject: [PATCH 05/49] Thread: implement review feedback (#42011) --- source/_integrations/thread.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/_integrations/thread.markdown b/source/_integrations/thread.markdown index b4c03e505e4..9fe7c76f738 100644 --- a/source/_integrations/thread.markdown +++ b/source/_integrations/thread.markdown @@ -210,7 +210,7 @@ If you want to migrate to a Home Assistant Connect ZBT-2, follow the steps in th ### Prerequisites - [Home Assistant Operating System](/docs/glossary/#home-assistant-operating-system) installed on your smart home hub. For example: - - on a Home Assistant Green, where Home Assistant OS is preinstalled + - On a Home Assistant Green, where Home Assistant OS is preinstalled - On a Home Assistant Yellow or on a Raspberry Pi - Existing Thread adapter connected to your Home Assistant hub - Latest updates installed @@ -227,18 +227,17 @@ If you want to migrate to a Home Assistant Connect ZBT-2, follow the steps in th 2. Go to {% my supervisor_addon title="**Settings** > **Add-ons** > **OpenThread Border Router**" addon="core_openthread_border_router" %} and select the **Configuration** tab. 3. Under **Devices**, select your adapter. 4. Enter the **Baudrate** as specified in the documentation of your adapter. - - If you can't find the baudrate, contact the manufacturer's support. - - If you're feeling lucky, try `460800`. + - If you can't find the baudrate, try `460800` or contact the manufacturer's support. - **Save** your changes. - **Troubleshooting**: - Check the logs. - - If the add-on crashes or fails to communicate with the Thread integration: Disable the **Hardware flow control** option and try again. + - If the add-on crashes or fails to communicate with the Thread integration: Toggle the **Hardware flow control** option and try again. 5. Restart the add-on and check the logs. Wait. - **Info**: Your Thread network is managed by Home Assistant. It is not stored on the adapter. Migrating the adapter means that Home Assistant will start to use your new adapter's radio instead of the old one. 6. Go to {% my integrations title="**Settings** > **Devices & services**" %}, select the **Thread** integration. - Select the cogwheel {% icon "mdi:cog-outline" %}. - **Result**: You should now see that the Thread network is still there. - - **Troubleshooting**: If you don't see the network there, go back to the add-on configuration and adjust your settings, if needed and try again. + - **Troubleshooting**: If you don't see the network there, go back to the add-on configuration and adjust your settings, if needed, and try again. 7. If you no longer want to use the old adapter, you can unplug it now. ## Understanding the Thread configuration page From 79a7a8d09f878b1c1153117f32f13959699eaf52 Mon Sep 17 00:00:00 2001 From: Johnny Willemsen Date: Fri, 28 Nov 2025 09:49:47 +0100 Subject: [PATCH 06/49] Clarify menu terminology in system health documentation (#42013) --- source/_integrations/system_health.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/system_health.markdown b/source/_integrations/system_health.markdown index ee4a4ab883c..30d13987e4d 100644 --- a/source/_integrations/system_health.markdown +++ b/source/_integrations/system_health.markdown @@ -11,7 +11,7 @@ ha_integration_type: system The System Health integration provides an API to offer information on the system and its components. It also allows to run diagnostic tools to diagnose problems. -System Health integration data can be viewed at **Settings** -> **System** -> **Repairs** -> **System Information** in the overflow menu (top right). +System Health integration data can be viewed at **Settings** -> **System** -> **Repairs** -> **System Information** in the three dots menu (top right). {% my system_health badge %} From 875295fbc2113d7dc5f3d8aff6c77c247b78ed97 Mon Sep 17 00:00:00 2001 From: jameson_uk <1040621+jamesonuk@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:51:27 +0000 Subject: [PATCH 07/49] alexa_devices: add link for alternatives (#41992) --- source/_integrations/alexa_devices.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/alexa_devices.markdown b/source/_integrations/alexa_devices.markdown index b547344e352..8b4566bfe24 100644 --- a/source/_integrations/alexa_devices.markdown +++ b/source/_integrations/alexa_devices.markdown @@ -107,6 +107,10 @@ This action essentially allows you to control Alexa using text commands rather t This action allows you to play one of the built-in Alexa sounds. The full list of sounds is available in [Amazon's documentation (needs authentication)](https://alexa.amazon.com/api/behaviors/entities?skillId=amzn1.ask.1p.sound) +{%tip%} +Additional sounds are available through advanced markup using the `notify.send_message` [action](#action-notifysend_message) +{%endtip%} + | Data attribute | Optional | Description | | -------------- | -------- | ----------------------------------------- | | `device_id` | no | Device on which you want to play sound | From c6b66722487671bfe9d5f5f644c8135545859b91 Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Sat, 29 Nov 2025 09:47:42 +0100 Subject: [PATCH 08/49] Improve MQTT fan percentage state and command topic description (#42019) --- source/_integrations/fan.mqtt.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index 3ddc7d8df21..c5e53238ec5 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -249,11 +249,11 @@ percentage_command_template: required: false type: template percentage_command_topic: - description: The MQTT topic to publish commands to change the fan speed state based on a percentage. + description: The MQTT topic to publish commands to change the fan speed state based on a percentage setting. The value shall be in the range from `speed_range_min` to `speed_range_max`. required: false type: string percentage_state_topic: - description: The MQTT topic subscribed to receive fan speed based on percentage. + description: The MQTT topic subscribed to receive fan speed state. This is a value in the range from `speed_range_min` to `speed_range_max`. required: false type: string percentage_value_template: From 3f8135fe2d7580d0e4e32754736663c16ab25561 Mon Sep 17 00:00:00 2001 From: Michael Mior Date: Sat, 29 Nov 2025 15:38:54 -0500 Subject: [PATCH 09/49] Remove Nest Guard example from Google Assistant SDK docs (#42024) --- source/_integrations/google_assistant_sdk.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/google_assistant_sdk.markdown b/source/_integrations/google_assistant_sdk.markdown index db9b5da700c..772e5b07654 100644 --- a/source/_integrations/google_assistant_sdk.markdown +++ b/source/_integrations/google_assistant_sdk.markdown @@ -24,7 +24,6 @@ The Google Assistant SDK integration allows Home Assistant to interact with Goog This integration allows: - Sending text commands to Google Assistant to control devices supported by Google Assistant but not by Home Assistant. Examples: - - Set Nest Guard to home and guarding - Start vacuuming - Stream front door on living room TV - Turn off kitchen TV From f861f2b60e2b987e332dc812367001649915888d Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Mon, 1 Dec 2025 11:51:42 +0100 Subject: [PATCH 10/49] Installation with Green: fix link to getting started procedure (#42037) --- source/installation/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/installation/index.html b/source/installation/index.html index 135d0fb36d6..e68561af625 100644 --- a/source/installation/index.html +++ b/source/installation/index.html @@ -52,7 +52,7 @@ toc: true %} View tutorial {% include assets/chevron_right.html %} Date: Mon, 1 Dec 2025 13:01:04 +0000 Subject: [PATCH 11/49] Fix typos and enhance clarity in Times of the Day documentation (#42038) --- source/_integrations/tod.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/tod.markdown b/source/_integrations/tod.markdown index 29ea8a9cb03..85e5407713b 100644 --- a/source/_integrations/tod.markdown +++ b/source/_integrations/tod.markdown @@ -29,11 +29,11 @@ Off time: ## YAML configuration -Alternatlively, this integration can be configured and set up manually via YAML instead. This has some additional functionality over the UI version. +Alternatively, this integration can be configured and set up manually via YAML. This has some additional functionality over the UI setup. -The time ranges can be provided as absolute local time or using the `sunrise` or `sunset` keyword calculated based on the sun position for location. The location must be provided in the configuration. +The time ranges can be provided as an absolute local time or by using the `sunrise` or `sunset` keyword, calculated based on the sun position for the location. -In addition for sun position based ranges, the negative or positive offset can be configured. +In addition, for sun position-based ranges, a negative or positive offset can be configured. To enable the Times of Day binary sensor in your installation, add the following to your {% term "`configuration.yaml`" %} file: From 403c6852191ef326aa11295bcf238fe346d623b5 Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:35:07 +0100 Subject: [PATCH 12/49] Thread: add non-Home-Assistant-brand adapter to HA (#42041) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- source/_integrations/thread.markdown | 50 +++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/source/_integrations/thread.markdown b/source/_integrations/thread.markdown index 9fe7c76f738..e95865b1d24 100644 --- a/source/_integrations/thread.markdown +++ b/source/_integrations/thread.markdown @@ -141,6 +141,7 @@ Follow these steps if you want to turn Home Assistant into a Thread border route - [Enable Thread on Home Assistant Yellow](https://support.nabucasa.com/hc/en-us/articles/25742476767517). - [Enable Thread on Home Assistant Connect ZBT-1](https://support.nabucasa.com/hc/en-us/sections/26122472719517). - [Enable Thread on Home Assistant Connect ZBT-2](https://support.nabucasa.com/hc/en-us/sections/31260019451421). + - [Adding a Thread adapter to Home Assistant](#adding-a-thread-adapter-to-home-assistant). 2. Make sure the Home Assistant Thread network is defined as preferred network. - This should happen automatically, but check to be sure. @@ -192,15 +193,56 @@ Note: the steps and images here show the process with a Google Thread network. B ![image](/images/integrations/thread/thread-google-br.png) -5. To enable Thread support on your Home Assistant Yellow, Connect ZBT-1, or [Connect ZBT-2](/connect/zbt-2/), you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure: +5. To enable Thread support, you need to install the **OpenThread Border Router** add-on. Follow the corresponding procedure: - [Enable Thread on Home Assistant Yellow](https://support.nabucasa.com/hc/en-us/articles/25742476767517). - [Enable Thread on Home Assistant Connect ZBT-1](https://support.nabucasa.com/hc/en-us/sections/26122472719517). - [Enable Thread on Home Assistant Connect ZBT-2](https://support.nabucasa.com/hc/en-us/sections/31260019451421). + - [Adding a Thread adapter to Home Assistant](#adding-a-thread-adapter-to-home-assistant). - **Result**: The network now shows as the preferred network, joined with the third-party network. ![image](/images/integrations/thread/thread-ha-preferred.png) - 🎉 You successfully created a Home Assistant Thread network and joined it with a pre-existing third-party network. +## Adding a Thread adapter to Home Assistant + +Follow these steps if you want to use a non-Home-Assistant-brand Thread adapter with Home Assistant. + +If you have a Home Assistant brand Thread adapter, follow the corresponding instructions instead: + +- [Enable Thread on Home Assistant Yellow](https://support.nabucasa.com/hc/en-us/articles/25742476767517). +- [Enable Thread on Home Assistant Connect ZBT-1](https://support.nabucasa.com/hc/en-us/sections/26122472719517). +- [Enable Thread on Home Assistant Connect ZBT-2](https://support.nabucasa.com/hc/en-us/sections/31260019451421). + +### Prerequisites + +- [Home Assistant Operating System](/docs/glossary/#home-assistant-operating-system) installed on your smart home hub. For example: + - On a Home Assistant Green, where Home Assistant OS is preinstalled + - On a Home Assistant Yellow or on a Raspberry Pi +- Latest updates installed +- A new Thread adapter and a USB extension cable + - If your adapter supports multiple protocols: + - They might have another firmware installed by default (Zigbee, for example). + - Check their documentation and install the OpenThread firmware on the adapter. + - Check their documentation and take a note of the baudrate. + +### To add a Thread adapter to the OpenThread Border Router add-on + +1. Plug the adapter into the extension cable and plug it into the Home Assistant hub. +2. Go to {% my supervisor_addon title="**Settings** > **Add-ons** > **OpenThread Border Router**" addon="core_openthread_border_router" %} and select the **Configuration** tab. +3. Under **Devices**, select your adapter. +4. Enter the **Baudrate** as specified in the documentation of your adapter. + - If you can't find the baudrate, try `460800` or contact the manufacturer's support. + - **Save** your changes. + - **Troubleshooting**: + - Check the logs. + - If the add-on crashes or fails to communicate with the Thread integration: Toggle the **Hardware flow control** option and try again. +5. Restart the add-on and check the logs. Wait. + - **Info**: Your Thread network is managed by Home Assistant. It is not stored on the adapter. Migrating the adapter means that Home Assistant will start to use your new adapter's radio instead of the old one. +6. Go to {% my integrations title="**Settings** > **Devices & services**" %}, select the **Thread** integration. + - Select the cogwheel {% icon "mdi:cog-outline" %}. + - **Result**: You should now see that the Thread network is still there. + - **Troubleshooting**: If you don't see the network there, go back to the add-on configuration and adjust your settings, if needed, and try again. + ## Migrating a Thread network to a new adapter Follow these steps if you already have a Thread adapter running but want to switch to a new adapter. @@ -216,9 +258,9 @@ If you want to migrate to a Home Assistant Connect ZBT-2, follow the steps in th - Latest updates installed - A new Thread adapter and a USB extension cable - If your adapter supports multiple protocols: - - They might have another firmware installed by default (Zigbee, for example). - - Check their documentation and install the OpenThread firmware on the adapter. - - Check their documentation and take a note of the baudrate. + - They might have another firmware installed by default (Zigbee, for example). + - Check their documentation and install the OpenThread firmware on the adapter. + - Check their documentation and take a note of the baudrate. - Thread devices ### To migrate an existing Thread network to a new adapter From d5c081d49533297db7e20d73d62dc34cde2a35f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 07:24:23 +0100 Subject: [PATCH 13/49] build(deps-dev): bump multi_json from 1.17.0 to 1.18.0 (#42047) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b43d66596f6..1723f6b269c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -83,7 +83,7 @@ GEM rb-inotify (~> 0.9, >= 0.9.10) logger (1.7.0) mercenary (0.4.0) - multi_json (1.17.0) + multi_json (1.18.0) mustermann (3.0.4) ruby2_keywords (~> 0.0.1) nokogiri (1.18.10-arm64-darwin) From 18a388b1ad5cd7c40795d7343991133ceefcf812 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 07:25:04 +0100 Subject: [PATCH 14/49] build(deps): bump express from 5.1.0 to 5.2.1 (#42045) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 57 +++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1a6ed5c460f..2b133be24c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1001,24 +1001,28 @@ } }, "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz", + "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==", "dev": true, "license": "MIT", "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", - "debug": "^4.4.0", + "debug": "^4.4.3", "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", + "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" + "raw-body": "^3.0.1", + "type-is": "^2.0.1" }, "engines": { "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/boundary": { @@ -1623,19 +1627,21 @@ } }, "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.0", + "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", + "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", @@ -2040,9 +2046,9 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2050,6 +2056,10 @@ }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/ignore": { @@ -4598,23 +4608,6 @@ "node": ">= 0.10" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/rc-config-loader": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", @@ -6765,6 +6758,7 @@ "integrity": "sha512-KpVIFK2FoIbgyvaieEfUkUQCuVGI7poc7dB5qkr8ixnQjNT6/6tb8tgAnfxuYOY1Q6h7uuDXfMWJ9NPCL+rLuw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@modelcontextprotocol/sdk": "^1.21.1", "@textlint/ast-node-types": "15.4.0", @@ -8167,6 +8161,7 @@ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } From 0d9e917c796f1a1340f059d71677cdadfba843eb Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Tue, 2 Dec 2025 11:03:28 +0100 Subject: [PATCH 15/49] Installation on RPI: add RAM min req (#42049) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- source/installation/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/installation/index.html b/source/installation/index.html index e68561af625..213f917fbfd 100644 --- a/source/installation/index.html +++ b/source/installation/index.html @@ -94,7 +94,7 @@ toc: true
TOOLS REQUIRED
    -
  • Raspberry Pi 4 or 5 with power supply
  • +
  • Raspberry Pi 4 or 5 with power supply (minimum 2 GB RAM)
  • MicroSD card
  • Ethernet connection
From 1f03421bb155afd17f5bfaa8eb578254fe1331f7 Mon Sep 17 00:00:00 2001 From: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:40:44 +0100 Subject: [PATCH 16/49] Thread: add third-party adapter: implement feedback (#42051) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: TheJulianJES --- source/_integrations/thread.markdown | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/source/_integrations/thread.markdown b/source/_integrations/thread.markdown index e95865b1d24..6b32abfaa8e 100644 --- a/source/_integrations/thread.markdown +++ b/source/_integrations/thread.markdown @@ -203,11 +203,11 @@ Note: the steps and images here show the process with a Google Thread network. B ![image](/images/integrations/thread/thread-ha-preferred.png) - 🎉 You successfully created a Home Assistant Thread network and joined it with a pre-existing third-party network. -## Adding a Thread adapter to Home Assistant +## Adding a third-party Thread adapter to Home Assistant -Follow these steps if you want to use a non-Home-Assistant-brand Thread adapter with Home Assistant. +Follow these steps if you want to set up a third-party Thread adapter. -If you have a Home Assistant brand Thread adapter, follow the corresponding instructions instead: +If you have a Home Assistant Thread adapter, follow the corresponding instructions instead: - [Enable Thread on Home Assistant Yellow](https://support.nabucasa.com/hc/en-us/articles/25742476767517). - [Enable Thread on Home Assistant Connect ZBT-1](https://support.nabucasa.com/hc/en-us/sections/26122472719517). @@ -227,20 +227,21 @@ If you have a Home Assistant brand Thread adapter, follow the corresponding inst ### To add a Thread adapter to the OpenThread Border Router add-on -1. Plug the adapter into the extension cable and plug it into the Home Assistant hub. -2. Go to {% my supervisor_addon title="**Settings** > **Add-ons** > **OpenThread Border Router**" addon="core_openthread_border_router" %} and select the **Configuration** tab. -3. Under **Devices**, select your adapter. -4. Enter the **Baudrate** as specified in the documentation of your adapter. +1. Install the **OpenThread Border Router** add-on. + - Go to {% my supervisor_addon title="**Settings** > **Add-ons**" addon="core_openthread_border_router" %} and select the **OpenThread Border Router** add-on. +2. Plug the adapter into the extension cable and plug it into the Home Assistant hub. +3. Go to {% my supervisor_addon title="**Settings** > **Add-ons** > **OpenThread Border Router**" addon="core_openthread_border_router" %} and select the **Configuration** tab. +4. Under **Devices**, select your adapter. +5. Enter the **Baudrate** as specified in the documentation of your adapter. - If you can't find the baudrate, try `460800` or contact the manufacturer's support. - **Save** your changes. - **Troubleshooting**: - Check the logs. - If the add-on crashes or fails to communicate with the Thread integration: Toggle the **Hardware flow control** option and try again. -5. Restart the add-on and check the logs. Wait. - - **Info**: Your Thread network is managed by Home Assistant. It is not stored on the adapter. Migrating the adapter means that Home Assistant will start to use your new adapter's radio instead of the old one. -6. Go to {% my integrations title="**Settings** > **Devices & services**" %}, select the **Thread** integration. +6. Restart the add-on and check the logs. Wait. +7. Go to {% my integrations title="**Settings** > **Devices & services**" %}, select the **Thread** integration. - Select the cogwheel {% icon "mdi:cog-outline" %}. - - **Result**: You should now see that the Thread network is still there. + - **Result**: You should now see a new `ha-thread` Thread network. - **Troubleshooting**: If you don't see the network there, go back to the add-on configuration and adjust your settings, if needed, and try again. ## Migrating a Thread network to a new adapter From cf3060797e491b0f2099090ec47a3f2d8cd532f9 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 2 Dec 2025 15:46:48 +0100 Subject: [PATCH 17/49] Document installation parameters for SFR Box (#42053) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/sfr_box.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_integrations/sfr_box.markdown b/source/_integrations/sfr_box.markdown index fffe3f5d198..f84139cbaaa 100644 --- a/source/_integrations/sfr_box.markdown +++ b/source/_integrations/sfr_box.markdown @@ -27,6 +27,15 @@ This integration provides the following platforms: {% include integrations/config_flow.md %} +{% configuration_basic %} +Host: + description: "The hostname, IP address, or full URL of your SFR device." +Username (optional): + description: "The username for accessing your SFR box's web interface. The default is 'admin'." +Password (optional): + description: "The password for accessing your SFR box's web interface. The default is the Wi-Fi security key found on the device label." +{% endconfiguration_basic %} + ## Compatibility The integration uses the REST API, which is known to be available on models `NB4`, `NB5`, `NB6`, `NB6V`, and `NB6VAC`. From d4b7afdf6f1941a465e792350f7d821ae2e01710 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 19:08:59 +0100 Subject: [PATCH 18/49] build(deps): bump @modelcontextprotocol/sdk from 1.21.1 to 1.24.0 (#42057) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b133be24c2..6ee727dda18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -144,9 +144,9 @@ "license": "MIT" }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.21.1.tgz", - "integrity": "sha512-UyLFcJLDvUuZbGnaQqXFT32CpPpGj7VS19roLut6gkQVhb439xUzYWbsUvdI3ZPL+2hnFosuugtYWE0Mcs1rmQ==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.24.0.tgz", + "integrity": "sha512-D8h5KXY2vHFW8zTuxn2vuZGN0HGrQ5No6LkHwlEA9trVgNdPL3TF1dSqKA7Dny6BbBYKSW/rOBDXdC8KJAjUCg==", "dev": true, "license": "MIT", "dependencies": { @@ -159,20 +159,25 @@ "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", + "jose": "^6.1.1", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.24.1" + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.0" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@cfworker/json-schema": "^4.1.1" + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" }, "peerDependenciesMeta": { "@cfworker/json-schema": { "optional": true + }, + "zod": { + "optional": false } } }, @@ -2358,6 +2363,16 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jose": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", + "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8167,13 +8182,13 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", + "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", "dev": true, "license": "ISC", "peerDependencies": { - "zod": "^3.24.1" + "zod": "^3.25 || ^4" } }, "node_modules/zwitch": { From 99cce08f8a5975afdb40e8194481ebadb9f91f46 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Tue, 2 Dec 2025 20:59:21 +0100 Subject: [PATCH 19/49] Remove region part of mobile app URL (#42058) --- source/_includes/site/footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_includes/site/footer.html b/source/_includes/site/footer.html index 76e55c85e59..5d0869d5261 100644 --- a/source/_includes/site/footer.html +++ b/source/_includes/site/footer.html @@ -49,7 +49,7 @@

Companion apps

From ff264a9faf7eb4b722e07d7174d5ebc5672fb365 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Tue, 2 Dec 2025 21:00:03 +0100 Subject: [PATCH 20/49] Update AquaCell URLs (#42066) --- source/_integrations/aquacell.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/aquacell.markdown b/source/_integrations/aquacell.markdown index 4b30eac4038..9d1caa8f353 100644 --- a/source/_integrations/aquacell.markdown +++ b/source/_integrations/aquacell.markdown @@ -28,9 +28,9 @@ These models are also recognizable by the required curved salt blocks. - [HarveyArc Water Softener](https://www.harveywatersofteners.co.uk/products/water-softeners/harveyarc-water-softener) - [TwinTec Cobalt](https://www.twintec.com/our-products/tt-cobalt/) -The Mijn AquaCell app can be found on the [Apple App Store](https://apps.apple.com/us/app/mijn-aquacell/id1632415201) or on [Google Play](https://play.google.com/store/apps/details?id=com.aquacell.sws). +The Mijn AquaCell app can be found on the [Apple App Store](https://apps.apple.com/app/mijn-aquacell/id1632415201) or on [Google Play](https://play.google.com/store/apps/details?id=com.aquacell.sws). -The myHarvey app can be found on the [Apple App Store](https://apps.apple.com/us/app/myharvey/id1551338436) or on [Google Play](https://play.google.com/store/apps/details?id=com.harvey.sws). +The myHarvey app can be found on the [Apple App Store](https://apps.apple.com/app/myharvey/id1551338436) or on [Google Play](https://play.google.com/store/apps/details?id=com.harvey.sws). ## Prerequisites From 2b5bf9b0460658e9f3fbab1e5af9ad203bd15126 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Tue, 2 Dec 2025 21:05:02 +0100 Subject: [PATCH 21/49] Add a description of the configuration options for Shelly (#42063) --- source/_integrations/shelly.markdown | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 5be79b2a2c8..91176b4c36f 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -56,6 +56,13 @@ Port: description: "Custom TCP port of the device. Change this only if the device is connected via Shelly Range Extender." {% endconfiguration_basic %} +{% include integrations/option_flow.md %} + +{% configuration_basic %} +Bluetooth scanner mode: + description: "The scanner mode to use for Bluetooth scanning. Bluetooth scanning can be active or passive. With active, the Shelly requests data from nearby devices. With passive, the Shelly receives unsolicited data from nearby devices." +{% endconfiguration_basic %} + ## Shelly device generations There are four generations of devices and all generations are supported by this integration. There are some differences in how devices should be configured and in the naming of entities and devices between generations. @@ -121,8 +128,6 @@ Shelly devices do **not** support proxying active (GATT) connections. For more details, see [Remote Adapters](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) in the [Bluetooth integration](/integrations/bluetooth). -{% include integrations/option_flow.md %} - ## Range Extender Support Shelly generation 2+ devices that are not battery-powered can act as a Range Extender. From d7deeeee557b0253d49edbc4a994eadcb42561c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Dec 2025 10:26:49 +0100 Subject: [PATCH 22/49] build(deps): bump actions/checkout from 6.0.0 to 6.0.1 (#42083) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8a5773a07e3..8c14aa0a946 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out files from GitHub - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setting up Node.js uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: @@ -35,7 +35,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out files from GitHub - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setting up Node.js uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 with: From 9025898159ee4026af4b271a8ee1e51f307a5b4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Dec 2025 10:27:27 +0100 Subject: [PATCH 23/49] build(deps): bump actions/stale from 10.1.0 to 10.1.1 (#42085) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 3d510c891e8..2b123b7dfd2 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -12,7 +12,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0 + - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1 if: ${{ github.repository_owner == 'home-assistant' }} with: repo-token: ${{ secrets.GITHUB_TOKEN }} From 2e25774e8b815818d69ac32a1ee5ff1c6242bf64 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Dec 2025 10:28:02 +0100 Subject: [PATCH 24/49] build(deps-dev): bump textlint from 15.4.0 to 15.4.1 (#42086) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 551 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 202 insertions(+), 351 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ee727dda18..d0299926aec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-stringify": "^11.0.0", - "textlint": "^15.4.0", + "textlint": "^15.4.1", "textlint-filter-rule-allowlist": "^4.0.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", @@ -74,6 +74,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -87,10 +88,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -102,13 +104,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -122,10 +126,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -215,52 +220,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", - "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@npmcli/name-from-folder": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", @@ -275,72 +234,73 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@textlint/ast-node-types": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.4.0.tgz", - "integrity": "sha512-IqY8i7IOGuvy05wZxISB7Me1ZyrvhaQGgx6DavfQjH3cfwpPFdDbDYmMXMuSv2xLS1kDB1kYKBV7fL2Vi16lRA==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.4.1.tgz", + "integrity": "sha512-XifMpBMdo0E1Fuh85YdcYAgy+okNg9WKBzIPIO4JUDnSWUVFihnogrM4cjDapeHkgzSgulwR8oJVJ17eyxI1bA==", "dev": true, "license": "MIT" }, "node_modules/@textlint/ast-tester": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-15.4.0.tgz", - "integrity": "sha512-R5Wk0FAlEOzBm5WtUUYYYHmHw3quAIbKHB5mLYFVpMew6vNfdIItVxnBLgEGiLBNn3r93D7BniUxbi4itM2HUA==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-15.4.1.tgz", + "integrity": "sha512-qHuPUR9oieieeng5IO29jmtdIbhTaqNAEJKjbvrZxFiuywzWpcvHPry5PjwDWLbbb1SCWCVg6trEOdxBioXkLw==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "15.4.0", + "@textlint/ast-node-types": "15.4.1", "debug": "^4.4.3" } }, "node_modules/@textlint/ast-traverse": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-15.4.0.tgz", - "integrity": "sha512-gzFNjgg3DuBdB8f9mRKjVyVEhAKGpLTKIkyRfG3aX0ZCbpWEaHFNVaZmcXRyQGmloYrMT86XVogGQjJPeiHjfQ==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-15.4.1.tgz", + "integrity": "sha512-GEdGN7QNFckDU/RKX03/nJttlXNOXnbX/nt3kdm2BBKhMY44ADJnQZubi2RXI3tacg+5jGxYmPkX/MQVYJVmxQ==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "15.4.0" + "@textlint/ast-node-types": "15.4.1" } }, "node_modules/@textlint/config-loader": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-15.4.0.tgz", - "integrity": "sha512-/rarfemXGdKvEDp+L2oiVWTePtkya6w1LFfe2FHJUf0cviogan0cZgHvmY4/b/MFjJvSgGxyl5lUKZGlBaoi8Q==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-15.4.1.tgz", + "integrity": "sha512-EnzI2ukVn7n/+IoGoDbmSffbTrenapvPEhxNFv8/rAajggKOPXfveCfGHjVI6OAVPYFU1OMIDyw0XxcQikgOCQ==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/kernel": "15.4.0", - "@textlint/module-interop": "15.4.0", - "@textlint/resolver": "15.4.0", - "@textlint/types": "15.4.0", - "@textlint/utils": "15.4.0", + "@textlint/kernel": "15.4.1", + "@textlint/module-interop": "15.4.1", + "@textlint/resolver": "15.4.1", + "@textlint/types": "15.4.1", + "@textlint/utils": "15.4.1", "debug": "^4.4.3", "rc-config-loader": "^4.1.3" } }, "node_modules/@textlint/feature-flag": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-15.4.0.tgz", - "integrity": "sha512-fDGQJW6wNj2IdBvBzFYreiSw+7WhH1d7SlpqZPA8UX+gUU/TMwXU9VI55OF1QFEy/KPvaD3vtukE3B75wM04Sw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-15.4.1.tgz", + "integrity": "sha512-R7lZR73wGupkTVEAE5PaN3gf+tRswI2H+kuyMKYTucdOfImgfmMHi15jDmAxCw5B9tfMDNgxI0Moba0bOlQ2sg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/fixer-formatter": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-15.4.0.tgz", - "integrity": "sha512-Q3gUhiT9WZQ7bAjoWO91bg+S//fjdKxFhpN7Z6SfCdXfEr1C9OVWVnBSxneYkcYFd9wY5bqJxQ0czkrqwH4GyA==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-15.4.1.tgz", + "integrity": "sha512-prDhAbzUjiC/Vm/1RIxBuqO6wALQko+UyjGFdbwk/4g3gg8yUSF3mF5yqNumh+tQv/PaQYSlPOUTecjdpoIFJA==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/module-interop": "15.4.0", - "@textlint/resolver": "15.4.0", - "@textlint/types": "15.4.0", + "@textlint/module-interop": "15.4.1", + "@textlint/resolver": "15.4.1", + "@textlint/types": "15.4.1", "chalk": "^4.1.2", "debug": "^4.4.3", "diff": "^5.2.0", @@ -356,39 +316,39 @@ "dev": true }, "node_modules/@textlint/kernel": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-15.4.0.tgz", - "integrity": "sha512-mXQs1jCoBQJY8jvAF+j4v/JxsGoAGp3AvI98UkXmdhmWCYPbBnQ3zuQ+O9UewvcaoDF5kvjs+dXXfUIn9nJk5g==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-15.4.1.tgz", + "integrity": "sha512-XVh5lGmZA38pYdeJpiR+be/udE2wvtkuN3BIlFnR91V8/C7Wl9hTGrNoubaRgoO6JLnESyRDBH6fJBCBqtyujA==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "15.4.0", - "@textlint/ast-tester": "15.4.0", - "@textlint/ast-traverse": "15.4.0", - "@textlint/feature-flag": "15.4.0", - "@textlint/source-code-fixer": "15.4.0", - "@textlint/types": "15.4.0", - "@textlint/utils": "15.4.0", + "@textlint/ast-node-types": "15.4.1", + "@textlint/ast-tester": "15.4.1", + "@textlint/ast-traverse": "15.4.1", + "@textlint/feature-flag": "15.4.1", + "@textlint/source-code-fixer": "15.4.1", + "@textlint/types": "15.4.1", + "@textlint/utils": "15.4.1", "debug": "^4.4.3", "fast-equals": "^4.0.3", "structured-source": "^4.0.0" } }, "node_modules/@textlint/linter-formatter": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.4.0.tgz", - "integrity": "sha512-rfqOZmnI1Wwc/Pa4LK+vagvVPmvxf9oRsBRqIOB04DwhucingZyAIJI/TyG18DIDYbP2aFXBZ3oOvyAxHe/8PQ==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.4.1.tgz", + "integrity": "sha512-kAV7Sup3vwvqxKvBbf9lx/JaPHkRybQp/LLvA73U1AorPZE6XyfBAFG24BbMiCs4OX1ax4g7kXRuFPgMLWRf+g==", "dev": true, "license": "MIT", "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "15.4.0", - "@textlint/resolver": "15.4.0", - "@textlint/types": "15.4.0", + "@textlint/module-interop": "15.4.1", + "@textlint/resolver": "15.4.1", + "@textlint/types": "15.4.1", "chalk": "^4.1.2", "debug": "^4.4.3", - "js-yaml": "^3.14.1", + "js-yaml": "^4.1.0", "lodash": "^4.17.21", "pluralize": "^2.0.0", "string-width": "^4.2.3", @@ -398,13 +358,13 @@ } }, "node_modules/@textlint/markdown-to-ast": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-15.4.0.tgz", - "integrity": "sha512-UnSkL7+6IfOuO9odJZyJdvX3QoO65lFNdR3purldFRWQ6fJ0TY/hshm7y+Hc0TJV2RlwpsSSM1jX32u/FHVBlg==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-15.4.1.tgz", + "integrity": "sha512-b6+MNADWtXz8c2CP7sWOBbS1YGaZ51h8Ws9efLAT/kltOcGg4nGvIK2Vgs8vmTePcl8kIRfR02bllk2Lc82yyg==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "15.4.0", + "@textlint/ast-node-types": "15.4.1", "debug": "^4.4.3", "mdast-util-gfm-autolink-literal": "^0.1.3", "neotraverse": "^0.6.18", @@ -659,9 +619,9 @@ } }, "node_modules/@textlint/module-interop": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.4.0.tgz", - "integrity": "sha512-uGf+SFIfzOLCbZI0gp+2NLsrkSArsvEWulPP6lJuKp7yRHadmy7Xf/YHORe46qhNyyxc8PiAfiixHJSaHGUrGg==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.4.1.tgz", + "integrity": "sha512-jHtM2E5CR68P3z/+FGrEU5pml2fQVzEo2sez9FEjrVHSPCrHtqHcPaKfsYbQJjc9C48ObwaWrCzRNaL3KedNCQ==", "dev": true, "license": "MIT" }, @@ -689,69 +649,69 @@ } }, "node_modules/@textlint/resolver": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.4.0.tgz", - "integrity": "sha512-Vh/QceKZQHFJFG4GxxIsKM1Xhwv93mbtKHmFE5/ybal1mIKHdqF03Z9Guaqt6Sx/AeNUshq0hkMOEhEyEWnehQ==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.4.1.tgz", + "integrity": "sha512-uVssyG3XXXKNY+O7NOajGvQZTyOuhPviwlq7Xek6ZT9K1eDQtA8074cPkAQoLMYhi/TUyOE5P5kpz42UF8Lmdw==", "dev": true, "license": "MIT" }, "node_modules/@textlint/source-code-fixer": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-15.4.0.tgz", - "integrity": "sha512-Uwt+ev491nRFrJBM9A2cRDRUxy/HaIO5Gsgwzrbx6T2yp+owegZXN5hQn60Rm8s8tsKAFMkHm6zc0tovTfDobA==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-15.4.1.tgz", + "integrity": "sha512-Q77Jm2KE/fkJPbq07DacB3O2H9dBt5bjeIyt5YuL+cQeeK6p6stL27VgFehHWZ2EIo4pfrd1O2Qr8U/UbG0pVw==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/types": "15.4.0", + "@textlint/types": "15.4.1", "debug": "^4.4.3" } }, "node_modules/@textlint/text-to-ast": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-15.4.0.tgz", - "integrity": "sha512-X80IrSTUuE0DTuQgeYd0PpiRyBN6L1AB4s71WDAFwqT/0anOxSEJznb0e2mAMu/H/01gZ7xyOfRcil0sZx/jhg==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-15.4.1.tgz", + "integrity": "sha512-fo9ZQ/AufHwoffBZU2e+ZmlKb/xj60+zOgh/N+STCrVTZJ96mzejoJhBT/g8yEFPELcW+R9cJ9Yj29dUdmnAkg==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "15.4.0" + "@textlint/ast-node-types": "15.4.1" } }, "node_modules/@textlint/textlint-plugin-markdown": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-15.4.0.tgz", - "integrity": "sha512-fI6lpnqknaVBYWF/mg0nvqcVu0OZ5qh8o8B/pkRYJx67Ku5GmIvHI+tZr907U9WjZH1DAtzvmATwXcQ73Wwilg==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-15.4.1.tgz", + "integrity": "sha512-8zoZlkh1gzlUZF0R/TtqG6bqKfXdfLrL/+n8ThTTs3TUTbRry9sktGT3itLI0ksgVIygyZPKWlRh3EZdqCPwyw==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/markdown-to-ast": "15.4.0", - "@textlint/types": "15.4.0" + "@textlint/markdown-to-ast": "15.4.1", + "@textlint/types": "15.4.1" } }, "node_modules/@textlint/textlint-plugin-text": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-15.4.0.tgz", - "integrity": "sha512-Hm2+TI6mFSqfY7n0A11BNwiZj3nj2VWGQvs3kZG5ZuHltUr+ywZUZxD0lKUC4BWW/lqdnIWJSo31Y4fZIA3dGQ==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-15.4.1.tgz", + "integrity": "sha512-RynPPDMcOev//2FGXOk64+AcA4jQkjKevQCmVnhNcN2IfZdSX3eEvq9oCRdf33vPlCXLKzu2SKY406Pl1NMppw==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/text-to-ast": "15.4.0", - "@textlint/types": "15.4.0" + "@textlint/text-to-ast": "15.4.1", + "@textlint/types": "15.4.1" } }, "node_modules/@textlint/types": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.4.0.tgz", - "integrity": "sha512-ZMwJgw/xjxJufOD+IB7I2Enl9Si4Hxo04B76RwUZ5cKBKzOPcmd6WvGe2F7jqdgmTdGnfMU+Bo/joQrjPNIWqg==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.4.1.tgz", + "integrity": "sha512-WByVZ3zblbvuI+voWQplUP7seSTKXI9z6TMVXEB3dY3JFrZCIXWKNfLbETX5lZV7fYkCMaDtILO1l6s11wdbQA==", "dev": true, "license": "MIT", "dependencies": { - "@textlint/ast-node-types": "15.4.0" + "@textlint/ast-node-types": "15.4.1" } }, "node_modules/@textlint/utils": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-15.4.0.tgz", - "integrity": "sha512-vE3jYW10V4wwu0iBzyrozQKEXtThE4AU4fVLzBmo2NaN3old3/nua8/Drpmkeh49gO9+rXluqP76EpNrvXWm7w==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-15.4.1.tgz", + "integrity": "sha512-LuKgosjL34ld2OlPIJ7OYhdZfI3byJ0tvojiPi6PK0IIJ2Vk2RtssV84DZJOubedqSTzEN2EBB9tVdtcHcKFUg==", "dev": true, "license": "MIT" }, @@ -928,6 +888,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -952,14 +913,11 @@ } }, "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } + "license": "Python-2.0" }, "node_modules/assign-symbols": { "version": "1.0.0", @@ -994,7 +952,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.2.0", @@ -1036,6 +995,16 @@ "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", "dev": true }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -1254,6 +1223,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1265,7 +1235,8 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/comma-separated-tokens": { "version": "2.0.3", @@ -1572,20 +1543,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1942,6 +1899,27 @@ "node": ">= 0.4" } }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -2346,16 +2324,14 @@ } }, "node_modules/jackspeak": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", - "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -2381,14 +2357,13 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -4221,6 +4196,22 @@ "node": ">= 0.6" } }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -4384,10 +4375,11 @@ } }, "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/parse-entities": { "version": "2.0.0", @@ -4636,26 +4628,6 @@ "require-from-string": "^2.0.2" } }, - "node_modules/rc-config-loader/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/rc-config-loader/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/read-package-json-fast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", @@ -6605,13 +6577,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -6651,6 +6616,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6702,6 +6668,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6768,30 +6735,30 @@ "dev": true }, "node_modules/textlint": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-15.4.0.tgz", - "integrity": "sha512-KpVIFK2FoIbgyvaieEfUkUQCuVGI7poc7dB5qkr8ixnQjNT6/6tb8tgAnfxuYOY1Q6h7uuDXfMWJ9NPCL+rLuw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-15.4.1.tgz", + "integrity": "sha512-Enhu+WpNnP30OlOBTV3cMez+fNzcsv1bV9AtIVscUMiDcF/aFfAPoXklMMGltK2fffxPVEn5pr2yFiyihJdZ+w==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@modelcontextprotocol/sdk": "^1.21.1", - "@textlint/ast-node-types": "15.4.0", - "@textlint/ast-traverse": "15.4.0", - "@textlint/config-loader": "15.4.0", - "@textlint/feature-flag": "15.4.0", - "@textlint/fixer-formatter": "15.4.0", - "@textlint/kernel": "15.4.0", - "@textlint/linter-formatter": "15.4.0", - "@textlint/module-interop": "15.4.0", - "@textlint/resolver": "15.4.0", - "@textlint/textlint-plugin-markdown": "15.4.0", - "@textlint/textlint-plugin-text": "15.4.0", - "@textlint/types": "15.4.0", - "@textlint/utils": "15.4.0", + "@modelcontextprotocol/sdk": "^1.22.0", + "@textlint/ast-node-types": "15.4.1", + "@textlint/ast-traverse": "15.4.1", + "@textlint/config-loader": "15.4.1", + "@textlint/feature-flag": "15.4.1", + "@textlint/fixer-formatter": "15.4.1", + "@textlint/kernel": "15.4.1", + "@textlint/linter-formatter": "15.4.1", + "@textlint/module-interop": "15.4.1", + "@textlint/resolver": "15.4.1", + "@textlint/textlint-plugin-markdown": "15.4.1", + "@textlint/textlint-plugin-text": "15.4.1", + "@textlint/types": "15.4.1", + "@textlint/utils": "15.4.1", "debug": "^4.4.3", "file-entry-cache": "^10.1.4", - "glob": "^10.4.5", + "glob": "^10.5.0", "md5": "^2.3.0", "optionator": "^0.9.4", "path-to-glob-pattern": "^2.0.1", @@ -6828,24 +6795,6 @@ "integrity": "sha512-uzlJ+ZsCAyJm+lBi7j0UeBbj+Oy6w/VWoGJ3iHRHE5eZ8Z4iK66mq+PG/spupmbllLtz77OJbY89BYqgFyjXmA==", "dev": true }, - "node_modules/textlint-filter-rule-allowlist/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/textlint-filter-rule-allowlist/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/textlint-filter-rule-comments": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/textlint-filter-rule-comments/-/textlint-filter-rule-comments-1.2.2.tgz", @@ -6924,65 +6873,6 @@ "unist-util-visit": "^2.0.3" } }, - "node_modules/textlint/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/textlint/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/textlint/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/textlint/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -7207,52 +7097,6 @@ "integrity": "sha512-MFETx3tbTjE7Uk6vvnWINA/1iJ7LuMdO4fcq8UfF0pRbj01aGLduVvQcRyswuACJdpnHgg8E3rQLhaRdNEJS0w==", "dev": true }, - "node_modules/unified-engine/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/unified-engine/node_modules/glob": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", - "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/unified-engine/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/unified-engine/node_modules/parse-json": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.0.tgz", @@ -8062,6 +7906,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -8080,6 +7925,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8093,10 +7939,11 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8105,10 +7952,11 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -8120,13 +7968,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -8140,10 +7990,11 @@ } }, "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, diff --git a/package.json b/package.json index 6b4354c1c40..74255a8b1cc 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "remark-lint-prohibited-strings": "^4.0.0", "remark-lint-unordered-list-marker-style": "^4.0.1", "remark-stringify": "^11.0.0", - "textlint": "^15.4.0", + "textlint": "^15.4.1", "textlint-filter-rule-allowlist": "^4.0.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", From 3f861d23f034d91f60d4045280130302279d442d Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:33:39 +0100 Subject: [PATCH 25/49] Update Acaia URLs (#42094) --- source/_integrations/acaia.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/acaia.markdown b/source/_integrations/acaia.markdown index 0f8c9abe21c..02adccaa65d 100644 --- a/source/_integrations/acaia.markdown +++ b/source/_integrations/acaia.markdown @@ -118,5 +118,5 @@ This integration follows standard integration removal, no extra steps are requir {% details "Device not discovered or found" %} -Make sure your scale is turned on and in Bluetooth range to your Home Assistant instance. [ESPHome Bluetooth Proxies](https://esphome.io/components/bluetooth_proxy.html) are a great way to increase the range if your instance is too far away. Turn on debug settings in the acaia integration and check your logs. +Make sure your scale is turned on and in Bluetooth range to your Home Assistant instance. [ESPHome Bluetooth Proxies](https://esphome.io/components/bluetooth_proxy/) are a great way to increase the range if your instance is too far away. Turn on debug settings in the acaia integration and check your logs. {% enddetails %} From 89d2c54b0b038f81c5ea94dee29023a94b2cb3a1 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:34:35 +0100 Subject: [PATCH 26/49] Update Locative URLs (#42093) --- source/_integrations/locative.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/locative.markdown b/source/_integrations/locative.markdown index 15ea26dc512..3db1e88cde0 100644 --- a/source/_integrations/locative.markdown +++ b/source/_integrations/locative.markdown @@ -12,11 +12,11 @@ ha_config_flow: true ha_integration_type: integration --- -This platform allows you to detect presence using [Locative](https://www.locative.app/). Locative is an open source app for [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location. +This platform allows you to detect presence using [Locative](https://www.locative.app/). Locative is an open source app for [iOS](https://apps.apple.com/app/id725198453) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location. Install on your smartphone: -- [iOS](https://apps.apple.com/us/app/locative/id725198453?ign-mpt=uo%3D4) +- [iOS](https://apps.apple.com/app/id725198453) To configure Locative, you must set it up via the integrations panel in the configuration screen. You must set up the app to send a POST request to your Home Assistant instance at the webhook URL provided by the integration during setup. When you enter or exit a geofence, Locative will send the appropriate request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your `dev-state` menu for a new device that Locative will have created on its first `GET`. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated. From 2de8c9ca962c567d6fc64404fc87aa964c6c0220 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:35:15 +0100 Subject: [PATCH 27/49] Update Bluetooth URLs (#42088) --- source/_integrations/bluetooth.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown index 6702cdf8002..a1a9f63750c 100644 --- a/source/_integrations/bluetooth.markdown +++ b/source/_integrations/bluetooth.markdown @@ -343,12 +343,12 @@ When switching to an adapter with better performance, disable the old, less perf The below adapters are listed from best-performing to worst-performing: -- [Ethernet-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [passive scanning](https://esphome.io/components/esp32_ble_tracker.html#configuration-variables) +- [Ethernet-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [passive scanning](https://esphome.io/components/esp32_ble_tracker/#configuration-variables) - [USB High performance adapter](#known-working-high-performance-adapters) with [passive scanning](#passive-scanning) -- [Wi-Fi-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [passive scanning](https://esphome.io/components/esp32_ble_tracker.html#configuration-variables) -- [Ethernet-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [active scanning](https://esphome.io/components/esp32_ble_tracker.html#configuration-variables) +- [Wi-Fi-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [passive scanning](https://esphome.io/components/esp32_ble_tracker/#configuration-variables) +- [Ethernet-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [active scanning](https://esphome.io/components/esp32_ble_tracker/#configuration-variables) - [USB High performance adapter](#known-working-high-performance-adapters) with active scanning -- [Wi-Fi-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [active scanning](https://esphome.io/components/esp32_ble_tracker.html#configuration-variables) +- [Wi-Fi-connected Bluetooth proxies](#remote-adapters-bluetooth-proxies) running ESPHome 2023.6.0 or later with [active scanning](https://esphome.io/components/esp32_ble_tracker/#configuration-variables) - [Onboard high performance adapter](#cypress-based-adapters) with [passive scanning](#passive-scanning) - [Onboard high performance adapter](#cypress-based-adapters) with active scanning - [Known working adapters](#known-working-adapters) with [passive scanning](#passive-scanning) From f13a6e58fe6fe30245d0aeee5498a19d164ee19d Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:35:47 +0100 Subject: [PATCH 28/49] Update Probe Plus URLs (#42090) --- source/_integrations/probe_plus.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/probe_plus.markdown b/source/_integrations/probe_plus.markdown index ca3fec49afb..5e7ff6417d3 100644 --- a/source/_integrations/probe_plus.markdown +++ b/source/_integrations/probe_plus.markdown @@ -60,7 +60,7 @@ This integration can be used to monitor food temperatures, you could combine thi {% details "Device not discovered or found" %} -Make sure your probe is removed from the charging dock and the dock is within Bluetooth range to your Home Assistant instance. [ESPHome Bluetooth Proxies](https://esphome.io/components/bluetooth_proxy.html) are a great way to increase the range if your instance is too far away. Turn on debug settings in the Probe Plus integration and check your logs. +Make sure your probe is removed from the charging dock and the dock is within Bluetooth range to your Home Assistant instance. [ESPHome Bluetooth Proxies](https://esphome.io/components/bluetooth_proxy/) are a great way to increase the range if your instance is too far away. Turn on debug settings in the Probe Plus integration and check your logs. {% enddetails %} ## Removing the integration From d1bdf6f26cce73d42229c30c05817e04a452358a Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:36:16 +0100 Subject: [PATCH 29/49] Update MotionBlinds URLs (#42092) --- source/_integrations/motion_blinds.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index b718a74c5bb..6e5ca839485 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -28,14 +28,14 @@ Additionally the following brands have been reported to also work with this inte - [Brel Home](https://www.brel-home.nl/) - [3 Day Blinds](https://www.3dayblinds.com/) - [Decorquip Dream](https://www.decorquip.com/post.php?dream) -- [Diaz](https://www.diaz.be/en/) +- [Diaz](https://www.diaz.be/) - [Dooya](http://www.dooya.com/) - [Gaviota](https://www.gaviotagroup.com/en/) -- [Havana Shade](https://havanashade.com/) +- Havana Shade - [Heicko](https://heicko.de/en/tubular-motors/controls/e-smart-home/usb-smart-home-stick-bi-direktional-1-st.html) - [Hurrican Shutters Wholesale](https://www.hurricaneshutterswholesale.com/) - [Inspired Shades](https://www.inspired-shades.com/) -- [iSmartWindow](https://www.ismartwindow.co.nz/) +- [iSmartWindow](https://www.autoblinds.co.nz/) - [Kaiser Nienhaus](https://www.kaiser-nienhaus.de/) - [Krispol](https://krispol.eu/en/drives/) - [Linx](https://linxautomation.com.au/) @@ -48,7 +48,7 @@ Additionally the following brands have been reported to also work with this inte - [Smartblinds](https://www.smartblinds.nl/) - [Smart Home](https://www.smart-home.hu) - [Ublockout](https://www.ublockout.com/) -- [Uprise Smart Shades](http://uprisesmartshades.com) +- [Uprise Smart Shades](https://upriseshades.com/) This integration allows for both directly controlling blinds that support wifi-connection and controlling Uni- and Bi-direction blinds that connect to a 433MHz WiFi bridge. The following bridges are reported to work with this integration: @@ -81,7 +81,7 @@ In that app the key can often be found by clicking multiple times on specific pl ### Motionblinds app -The Motionblinds API uses a 16 character key that can be retrieved from the official "Motionblinds" app for [IOS](https://apps.apple.com/us/app/motion-blinds/id1437234324) or [Android](https://play.google.com/store/apps/details?id=com.coulisse.motion). +The Motionblinds API uses a 16 character key that can be retrieved from the official "Motionblinds" app for [IOS](https://apps.apple.com/app/id1437234324) or [Android](https://play.google.com/store/apps/details?id=com.coulisse.motion). Open the app, click the 3 dots in the top right corner, go to "settings", go to "Motion APP About", Please quickly tap this "Motion APP About" page 5 times, a popup will appear that gives you the key. @@ -107,7 +107,7 @@ In the 3 Day Blinds app go to the home screen, go to settings (three bars in the ### Connector app - To get the API key ([iOS app](https://apps.apple.com/us/app/connector/id1344058317), [Android app](https://play.google.com/store/apps/details?id=com.smarthome.app.connector)), follow these steps: + To get the API key ([iOS app](https://apps.apple.com/app/id1344058317), [Android app](https://play.google.com/store/apps/details?id=com.smarthome.app.connector)), follow these steps: 1. In the left sidebar of the app, open the **Settings** {% icon "mdi:gear-outline" %} (gear icon). 2. Select the **About** page of the Connector app. From 6952836e126c3e521096da24a84d6ee3f73c405a Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:37:01 +0100 Subject: [PATCH 30/49] Update PoolSense URLs (#42091) --- source/_integrations/poolsense.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/poolsense.markdown b/source/_integrations/poolsense.markdown index 633e8959bf9..090c73fea99 100644 --- a/source/_integrations/poolsense.markdown +++ b/source/_integrations/poolsense.markdown @@ -30,8 +30,8 @@ There is currently support for the following information within Home Assistant: You will need to use the associated standalone app for this device to register a username and password. -- [Google](https://play.google.com/store/apps/details?id=co.proautomation.app.poolSense&hl=en_ZA) -- [Apple](https://apps.apple.com/us/app/poolsense/id1288535609) +- [Google](https://play.google.com/store/apps/details?id=co.proautomation.app.poolSense) +- [Apple](https://apps.apple.com/app/poolsense/id1288535609) {% include integrations/config_flow.md %} From 22935f021826ea9ee87ea1070d3b377cc293e860 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:37:45 +0100 Subject: [PATCH 31/49] Update energy management URLs (#42089) --- source/_docs/energy/electricity-grid.markdown | 2 +- source/_includes/energy/ct_clamp.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/energy/electricity-grid.markdown b/source/_docs/energy/electricity-grid.markdown index 22639959080..342989d8d6f 100644 --- a/source/_docs/energy/electricity-grid.markdown +++ b/source/_docs/energy/electricity-grid.markdown @@ -53,7 +53,7 @@ The IEC62056-21 is a common protocol not only for electric meters. It uses an in #### Using (Smart Message Language) interface -In countries like Germany, SML (Smart Message Language) is used typically. ESPHome's [SML (Smart Message Language)](https://esphome.io/components/sml.html) is one way to integrate it. If you prefer to integrate it via MQTT, [sml2mqtt](https://github.com/spacemanspiff2007/sml2mqtt) is another open source option. +In countries like Germany, SML (Smart Message Language) is used typically. ESPHome's [SML (Smart Message Language)](https://esphome.io/components/sml/) is one way to integrate it. If you prefer to integrate it via MQTT, [sml2mqtt](https://github.com/spacemanspiff2007/sml2mqtt) is another open source option. #### Read the meter using an AI-on-the-edge-device diff --git a/source/_includes/energy/ct_clamp.md b/source/_includes/energy/ct_clamp.md index d6178bd3001..825325c3872 100644 --- a/source/_includes/energy/ct_clamp.md +++ b/source/_includes/energy/ct_clamp.md @@ -1,7 +1,7 @@ Current transformer (CT) clamp sensors measure your energy usage by looking at the current passing through an electrical wire. This makes it possible to calculate the energy usage. In Home Assistant we have support for off-the-shelf CT clamp sensors or you can build your own. - The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/products/shelly-em-50a-clamp-1?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/). -- You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started. +- You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp/) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32/). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started. - Using a Raspberry Pi, you can use a CT clamp HAT from LeChacal called [RPICT hats](https://lechacal.com/docs/RPICT/Raspberrypi_Current_and_Temperature_Sensor_Adaptor/). They can be stacked to expand the number of lines to monitor. They also provide Active, Apparent, and Reactive power and power factor for single-phase and three-phase installations. They integrate with Home Assistant using MQTT. _Attention! Installing CT clamp sensor devices requires opening your electrical cabinet. This work should be done by someone familiar with electrical wiring and may require a licensed professional in some regions. Your qualified installer will know how to do this._ From 8f684accdfef0f759b7e9f21143aec826b69a13c Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:38:15 +0100 Subject: [PATCH 32/49] Update URLs for the Bring integration (#42068) --- source/_integrations/bring.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/bring.markdown b/source/_integrations/bring.markdown index 3608a479f29..d06a8bb87b0 100644 --- a/source/_integrations/bring.markdown +++ b/source/_integrations/bring.markdown @@ -34,7 +34,7 @@ The **Bring!** integration allows you to sync your [Bring!](https://www.getbring **Bring!** is a grocery shopping list app that allows users to create shared lists and organize grocery shopping with family, partners, or roommates. -Available as a mobile app on [Google Play for Android](https://play.google.com/store/apps/details?id=ch.publisheria.bring) and the [App Store for iOS](https://itunes.apple.com/app/apple-store/id580669177). **Bring!** also offers a web version at [web.getbring.com](https://web.getbring.com). +Available as a mobile app on [Google Play for Android](https://play.google.com/store/apps/details?id=ch.publisheria.bring) and the [App Store for iOS](https://apps.apple.com/app/id580669177). **Bring!** also offers a web version at [web.getbring.com](https://web.getbring.com). ## How you can use this integration From 66fa0e0c5a84ec9b81fb6c8ef485d87eb6ce73c9 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:38:40 +0100 Subject: [PATCH 33/49] Update BleBox URLs (#42082) --- source/_integrations/blebox.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/blebox.markdown b/source/_integrations/blebox.markdown index bcf9b29c4de..2954fe119d9 100644 --- a/source/_integrations/blebox.markdown +++ b/source/_integrations/blebox.markdown @@ -22,7 +22,7 @@ ha_integration_type: integration ha_zeroconf: true --- -[BleBox](https://blebox.eu/?lang=en) produces small, low-power, surprisingly affordable, feature-rich WiFi devices for serverless home automation. +[BleBox](https://blebox.eu/) produces small, low-power, surprisingly affordable, feature-rich WiFi devices for serverless home automation. {% include integrations/config_flow.md %} From c790bf02cdebd5648dcc9dd3baf6a329a9170e7a Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:40:19 +0100 Subject: [PATCH 34/49] Update RAPT Bluetooth URLs (#42076) --- source/_integrations/rapt_ble.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/rapt_ble.markdown b/source/_integrations/rapt_ble.markdown index 0b9121ee579..f1f748fd215 100644 --- a/source/_integrations/rapt_ble.markdown +++ b/source/_integrations/rapt_ble.markdown @@ -15,7 +15,7 @@ ha_platforms: ha_integration_type: integration --- -Integrates [RAPT Pill](https://www.kegland.com.au/rapt-pill-hydrometer-thermometer-wifi-bluetooth.html) hydrometers into Home Assistant. +Integrates [RAPT Pill](https://kegland.com.au/products/yellow-rapt-pill-hydrometer-thermometer-wifi-bluetooth) hydrometers into Home Assistant. {% include integrations/config_flow.md %} @@ -23,4 +23,4 @@ The RAPT Pill BLE integration will automatically discover devices once the [Blue ## Supported devices -- [RAPT Pill Hydrometer & Thermometer](https://www.kegland.com.au/rapt-pill-hydrometer-thermometer-wifi-bluetooth.html) +- [RAPT Pill Hydrometer & Thermometer](https://kegland.com.au/products/yellow-rapt-pill-hydrometer-thermometer-wifi-bluetooth) From 4740962d37b387fc3116d3e1d43f508fe7c4f0c9 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:40:44 +0100 Subject: [PATCH 35/49] Update mobile app URLs (#42074) --- source/_integrations/mobile_app.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/mobile_app.markdown b/source/_integrations/mobile_app.markdown index 5d17fa4ee44..b813b6748bd 100644 --- a/source/_integrations/mobile_app.markdown +++ b/source/_integrations/mobile_app.markdown @@ -22,7 +22,7 @@ The Mobile App integration allows Home Assistant mobile apps to easily integrate If you are planning to use a mobile application that integrates with Home Assistant, we recommend that you keep this integration enabled. -If you are a mobile app developer, see the [developer documentation](https://developers.home-assistant.io/docs/api/native-app-integration.html) for instructions on how to build your app on top of the mobile app component. +If you are a mobile app developer, see the [developer documentation](https://developers.home-assistant.io/docs/api/native-app-integration/) for instructions on how to build your app on top of the mobile app component. ## Configuration @@ -35,7 +35,7 @@ mobile_app: ## Apps that use Mobile App -- [Home Assistant for iOS](https://apps.apple.com/us/app/home-assistant/id1099568401?ls=1) (official) +- [Home Assistant for iOS](https://apps.apple.com/app/home-assistant/id1099568401?ls=1) (official) - [Beta release](https://testflight.apple.com/join/1AlPbnLZ) (Testflight) - [Home Assistant for Android](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android) (official) - [Beta release](https://play.google.com/apps/testing/io.homeassistant.companion.android) From aca6bb096b7328b1c6d75847d5f60787c5d654a5 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:41:10 +0100 Subject: [PATCH 36/49] Update URLs for the Iotty integration (#42073) --- source/_integrations/iotty.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/iotty.markdown b/source/_integrations/iotty.markdown index 8f872c21537..b400174a92e 100644 --- a/source/_integrations/iotty.markdown +++ b/source/_integrations/iotty.markdown @@ -21,7 +21,7 @@ The iotty {% term integration%} lets you integrate iotty devices into Home Assis ## Prerequisites In order to use this integration, you must have an iotty account, and enter its credentials during account pairing. -To create an iotty account, you need to get the App from the [App Store](https://apps.apple.com/it/app/iotty-smart-home/id1230937401) or [Play Store](https://play.google.com/store/apps/details?id=com.dynamicait.iotty&hl=en). +To create an iotty account, you need to get the App from the [App Store](https://apps.apple.com/app/iotty-smart-home/id1230937401) or [Play Store](https://play.google.com/store/apps/details?id=com.dynamicait.iotty). {% include integrations/config_flow.md %} From 07894a080fc96f37e8e7a66b4e0ea812ba1c5839 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:41:34 +0100 Subject: [PATCH 37/49] Update flipr URLs (#42071) --- source/_integrations/flipr.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/flipr.markdown b/source/_integrations/flipr.markdown index f3ae9864ad5..1b8668bf385 100644 --- a/source/_integrations/flipr.markdown +++ b/source/_integrations/flipr.markdown @@ -17,7 +17,7 @@ ha_platforms: ha_integration_type: integration --- -[Go flipr](https://www.goflipr.com) company sells smart pool monitor and management devices. The Flipr and Flipr Hub devices publish data to the cloud via Wi-Fi and SigFox. +Go flipr company sells smart pool monitor and management devices. The Flipr and Flipr Hub devices publish data to the cloud via Wi-Fi and SigFox. This {% term integration %} gives you access on Home Assistant to the information measured by your Flipr with the same data as the vendor's smartphone application. This {% term integration %} gives you also access to the Flipr Hub to control your pool equipments like pump, heater, light, etc. @@ -31,7 +31,7 @@ There is currently support for the following device types within Home Assistant: You will need to use the standalone app for this device to register a username and password. - [Google](https://play.google.com/store/apps/details?id=com.goflipr.flipr) -- [Apple](https://apps.apple.com/fr/app/flipr/id1225898851) +- [Apple](https://apps.apple.com/app/flipr/id1225898851) {% include integrations/config_flow.md %} From e8ebec1721047bef8fab3a6610467ec54bf7419f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Dec 2025 10:41:56 +0100 Subject: [PATCH 38/49] build(deps): bump actions/setup-node from 6.0.0 to 6.1.0 (#42084) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8c14aa0a946..51ed3b07f8a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setting up Node.js - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 20 cache: "npm" @@ -37,7 +37,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - name: Setting up Node.js - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 + uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0 with: node-version: 20 cache: "npm" From c8c7a8e75bbcc8a82ad3d0ef313fa6c6fbd01664 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:43:20 +0100 Subject: [PATCH 39/49] Update ClickSend TTS URLs (#42070) --- source/_integrations/clicksend_tts.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/clicksend_tts.markdown b/source/_integrations/clicksend_tts.markdown index d960f5b95d2..478870b47de 100644 --- a/source/_integrations/clicksend_tts.markdown +++ b/source/_integrations/clicksend_tts.markdown @@ -41,11 +41,11 @@ api_key: required: true type: string recipient: - description: An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like `+14151234567`. This is the phone number that you want to call and notify via TTS, see [ClickSend Documentation](https://developers.clicksend.com/docs/rest/v3/#Send-Voice-Message) for more info. + description: An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like `+14151234567`. This is the phone number that you want to call and notify via TTS, see [ClickSend Documentation](https://developers.clicksend.com/docs/messaging/voice-messaging/other/send-voice-message) for more info. required: true type: string language: - description: The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](https://developers.clicksend.com/docs/rest/v3/#Send-Voice-Message). + description: The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](https://developers.clicksend.com/docs/messaging/voice-messaging/other/send-voice-message). required: false default: en-us type: string From 76e9fc6468b0652eca9dc0d421b847f12e76fe89 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:43:37 +0100 Subject: [PATCH 40/49] Update eq-3 Bluetooth URLs (#42075) --- source/_integrations/eq3btsmart.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/eq3btsmart.markdown b/source/_integrations/eq3btsmart.markdown index fc094043bf3..d90ab84b092 100644 --- a/source/_integrations/eq3btsmart.markdown +++ b/source/_integrations/eq3btsmart.markdown @@ -28,7 +28,7 @@ As the device doesn't contain a temperature sensor ([read more](https://forum.fh Pairing your eQ-3 Bluetooth Smart Thermostat device works differently based on your method of connection and the device's firmware version. -#### [ESPHome Bluetooth Proxies](https://esphome.io/components/bluetooth_proxy.html) +#### [ESPHome Bluetooth Proxies](https://esphome.io/components/bluetooth_proxy/) For firmware versions below 148, no additional configuration is required when using ESPHome Bluetooth Proxies. Since version 148, a security flaw in the devices has been fixed that now requires entering a passkey. @@ -50,7 +50,7 @@ ble_client: passkey: ``` -For further information see the [ESPHome documentation](https://esphome.io/components/ble_client.html#on-passkey-request). +For further information see the [ESPHome documentation](https://esphome.io/components/ble_client/#on_passkey_request). #### Other From 3a058893cb9326b62c487c07c9f4dfe276a05818 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:44:15 +0100 Subject: [PATCH 41/49] Update URLs for the Freedompro integration (#42072) --- source/_integrations/freedompro.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/freedompro.markdown b/source/_integrations/freedompro.markdown index e7cff0b211b..1c2f9c23c8f 100644 --- a/source/_integrations/freedompro.markdown +++ b/source/_integrations/freedompro.markdown @@ -38,7 +38,7 @@ This integration lets you control all [Freedompro](https://freedompro.eu/) acces You will need to obtain an API key from Freedompro's app to use this integration. -1. Download the app on your phone: ([Android](https://play.google.com/store/apps/details?id=eu.freedompro.app&hl=en&gl=US) / [iOS](https://apps.apple.com/en/app/freedompro/id1598082027)). +1. Download the app on your phone: ([Android](https://play.google.com/store/apps/details?id=eu.freedompro.app) / [iOS](https://apps.apple.com/app/id1598082027)). 2. Register and create your first home. 3. Make sure you have at least one accessory paired with the Freedompro Cloud before starting integration. 4. Switch to the **Profile** tab (bottom right corner). From e367c9c8b16101d965ba8ae231792e6501d4d7a0 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:47:30 +0100 Subject: [PATCH 42/49] Update URLs for Airly integration (#42064) --- source/_integrations/airly.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown index 67d2cb3fa12..b8483474297 100644 --- a/source/_integrations/airly.markdown +++ b/source/_integrations/airly.markdown @@ -15,11 +15,11 @@ ha_platforms: ha_integration_type: service --- -The **Airly** {% term integration %} uses the [Airly](https://airly.eu/) web service as a source for air quality data for your location. +The **Airly** {% term integration %} uses the [Airly](https://airly.org/) web service as a source for air quality data for your location. ## Setup -To generate an Airly API key, go to [Airly for developers](https://developer.airly.eu/register) page. +To generate an Airly API key, go to [Airly for developers](https://developer.airly.org/register) page. {% include integrations/config_flow.md %} From d12726559f8c7d4f84f51fc76230dd8d55a63524 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:48:18 +0100 Subject: [PATCH 43/49] Update TP-Link URLs (#42060) --- source/_integrations/tplink.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index eb5fb99b6f6..9c113e12016 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -42,7 +42,7 @@ ha_integration_type: integration ha_quality_scale: platinum --- -The `tplink` integration allows you to control your [TP-Link Kasa Smart Home Devices](https://www.tp-link.com/kasa-smart/) and [TP-Link Tapo Devices](https://www.tapo.com/) such as cameras, doorbells, chimes, lights, plugs, wall switches, robot vacuums, hubs, and hub-attached devices. +The `tplink` integration allows you to control your [TP-Link Kasa Smart Home Devices](https://www.kasasmart.com/) and [TP-Link Tapo Devices](https://www.tapo.com/) such as cameras, doorbells, chimes, lights, plugs, wall switches, robot vacuums, hubs, and hub-attached devices. ## How you can use this integration From eff9cd97dc17a6f19f51be47e65bcfc3e5705177 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:48:56 +0100 Subject: [PATCH 44/49] Update URLs for ThingSpeak integration (#42065) --- source/_integrations/thingspeak.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/thingspeak.markdown b/source/_integrations/thingspeak.markdown index 875578b5a7f..e6bc4279053 100644 --- a/source/_integrations/thingspeak.markdown +++ b/source/_integrations/thingspeak.markdown @@ -10,12 +10,12 @@ ha_integration_type: integration ha_quality_scale: legacy --- -The `thingspeak` integrations makes Home Assistant communicate with the [ThingSpeak API](https://thingspeak.com/). +The `thingspeak` integrations makes Home Assistant communicate with the [ThingSpeak API](https://thingspeak.mathworks.com/). For now, it records exactly one entity at once, which is great for testing purposes. For long-time storage you should rely on the [InfluxDB integration](/integrations/influxdb/). ## Configuration -You will have to create a [new channel](https://thingspeak.com/channels/new) on ThingSpeak and grab your Write API Key from the "API Keys" tab of the channel you want to use. +You will have to create a [new channel](https://thingspeak.mathworks.com/channels/new) on ThingSpeak and grab your Write API Key from the "API Keys" tab of the channel you want to use. To setup the ThingSpeak integration in your installation, add the following to your {% term "`configuration.yaml`" %} file: From 91e6a98e73da0124775840467db53f485667bad8 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:50:13 +0100 Subject: [PATCH 45/49] =?UTF-8?q?Update=20Lutron=20Cas=C3=A9ta=20URLs=20(#?= =?UTF-8?q?42061)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_integrations/lutron_caseta.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/lutron_caseta.markdown b/source/_integrations/lutron_caseta.markdown index d1cc03f0345..44b689ea737 100644 --- a/source/_integrations/lutron_caseta.markdown +++ b/source/_integrations/lutron_caseta.markdown @@ -33,9 +33,9 @@ ha_platforms: ha_integration_type: integration --- -[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches, dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` integration in Home Assistant is responsible for communicating with the Lutron Caseta Smart Bridge for the [Caseta](https://www.casetawireless.com/) product line of dimmers, switches, shades, and sensors. It will also communicate with the Lutron Radio RA2 Main Repeater for the [RA2 Select](http://www.lutron.com/en-US/Products/Pages/WholeHomeSystems/RA2Select/Overview.aspx) product line of dimmers, switches, shades, and sensors. +[Lutron](https://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches, dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` integration in Home Assistant is responsible for communicating with the Lutron Caseta Smart Bridge for the [Caseta](https://www.casetawireless.com/) product line of dimmers, switches, shades, and sensors. It will also communicate with the Lutron Radio RA2 Main Repeater for the [RA2 Select](https://www.lutron.com/controls/systems/ra2select) product line of dimmers, switches, shades, and sensors. -This integration supports the [Caséta](https://www.casetawireless.com/), [RA2 Select](https://www.lutron.com/en-US/Products/Pages/WholeHomeSystems/RA2Select/Overview.aspx), [RadioRA 3](https://radiora3.lutron.com/), and [Homeworks QSX](https://www.lutron.com/en-US/Products/Pages/WholeHomeSystems/Homeworks/Overview.aspx) **(not QS)** lines of products. +This integration supports the [Caséta](https://www.casetawireless.com/), [RA2 Select](https://www.lutron.com/controls/systems/ra2select), [RadioRA 3](https://radiora3.lutron.com/), and [Homeworks QSX](https://residential.lutron.com/homeworks) **(not QS)** lines of products. Supports Bridges: From 7624077a026646c95b85f3fc9014b9b8432cb10a Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 10:51:24 +0100 Subject: [PATCH 46/49] Update ESPHome URLs (#42059) --- source/_integrations/esphome.markdown | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index 84b07cbc19c..698988870b8 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -48,7 +48,7 @@ ha_quality_scale: platinum ## Overview -The **ESPHome** {% term integration %} allows [ESPHome](https://esphome.io) devices to connect directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html). +The **ESPHome** {% term integration %} allows [ESPHome](https://esphome.io) devices to connect directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api/). ESPHome is a firmware generator and configuration system that enables the transformation of microcontrollers into fully customizable smart home devices. Using a simple YAML configuration file, ESPHome allows users to define hardware components like sensors, actuators, and peripherals. These configurations are then compiled into custom firmware that can be flashed onto the target device. @@ -56,7 +56,7 @@ ESPHome is a firmware generator and configuration system that enables the transf - **YAML Configuration**: Specify hardware components, sensors, actuators, and integrations using a clean and straightforward YAML syntax. - **Custom Firmware Generation**: ESPHome compiles the provided configuration into a highly optimized, device-specific firmware image that is ready to be flashed onto microcontrollers. -- **Seamless Integration**: After flashing, ESPHome devices can integrate seamlessly with Home Assistant using the ESPHome native API. This documentation page focuses on the [native API](https://esphome.io/components/api.html), which allows devices to communicate directly with Home Assistant for real-time automation and monitoring. For other integrations, such as MQTT or HTTP, please refer to the relevant sections of the [ESPHome documentation](https://esphome.io/). +- **Seamless Integration**: After flashing, ESPHome devices can integrate seamlessly with Home Assistant using the ESPHome native API. This documentation page focuses on the [native API](https://esphome.io/components/api/), which allows devices to communicate directly with Home Assistant for real-time automation and monitoring. For other integrations, such as MQTT or HTTP, please refer to the relevant sections of the [ESPHome documentation](https://esphome.io/). ESPHome supports a variety of microcontrollers beyond just the ESP family. These include: @@ -68,7 +68,7 @@ ESPHome supports a variety of microcontrollers beyond just the ESP family. These For a list of officially supported microcontrollers and devices, refer to the [ESPHome device database](https://devices.esphome.io/). Keep in mind that this database represents only a portion of the ecosystem—many other devices and peripherals are supported but may not appear in the database. -For inspiration and examples of complete, ready-to-use configurations, check out the [ESPHome ready-made projects](https://esphome.io/projects/index.html). These include setups like [Bluetooth proxies](https://esphome.io/components/bluetooth_proxy.html), which can extend the [Bluetooth](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) range of Home Assistant. +For inspiration and examples of complete, ready-to-use configurations, check out the [ESPHome ready-made projects](https://esphome.io/projects/index.html). These include setups like [Bluetooth proxies](https://esphome.io/components/bluetooth_proxy/), which can extend the [Bluetooth](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) range of Home Assistant. If you're looking for pre-built solutions, the [Voice PE](https://www.home-assistant.io/voice-pe/) is an excellent example. It's a pre-built voice assistant device powered by ESPHome, offering an easy way to integrate voice control into your Home Assistant system. Many pre-built solutions, like the Voice PE, are open-source and can be customized, giving you flexibility to adapt them to your needs. @@ -93,7 +93,7 @@ password: {% endconfiguration_basic %} -For more information, see the [ESPHome Native API Component documentation](https://esphome.io/components/api.html). +For more information, see the [ESPHome Native API Component documentation](https://esphome.io/components/api/). {% include integrations/option_flow.md %} @@ -108,7 +108,7 @@ Subscribe to logs from the device: ## Supported devices -The ESPHome {% term integration %} works with devices that run ESPHome firmware and expose their functionality through the [native ESPHome API](https://esphome.io/components/api.html). This API is designed for tight, efficient integration with Home Assistant, enabling ESPHome devices to push updates directly to Home Assistant in **near real time**. +The ESPHome {% term integration %} works with devices that run ESPHome firmware and expose their functionality through the [native ESPHome API](https://esphome.io/components/api/). This API is designed for tight, efficient integration with Home Assistant, enabling ESPHome devices to push updates directly to Home Assistant in **near real time**. ## Updating data @@ -125,27 +125,27 @@ This real-time behavior enables fast, reactive automations and a smooth user exp ### Entities -The available entities depend on the components defined in the ESPHome YAML configuration for each device. These entities are exposed through the [Native API Component](https://esphome.io/components/api.html). +The available entities depend on the components defined in the ESPHome YAML configuration for each device. These entities are exposed through the [Native API Component](https://esphome.io/components/api/). ### Firing events on the Home Assistant event bus -When using the native API with Home Assistant, you can trigger events on the Home Assistant event bus directly from ESPHome. For more details, see the [homeassistant.event Action](https://esphome.io/components/api.html#homeassistant-event-action). +When using the native API with Home Assistant, you can trigger events on the Home Assistant event bus directly from ESPHome. For more details, see the [homeassistant.event Action](https://esphome.io/components/api/#homeassistantevent-action). ### Actions -Each device can define Home Assistant Actions based on its ESPHome YAML configuration. For more information, refer to the [Actions](https://esphome.io/components/api.html#actions) section in the [Native API Component](https://esphome.io/components/api.html) documentation. +Each device can define Home Assistant Actions based on its ESPHome YAML configuration. For more information, refer to the [Actions](https://esphome.io/components/api/#actions) section in the [Native API Component](https://esphome.io/components/api/) documentation. ### Retrieving data from Home Assistant -ESPHome can retrieve the state of Home Assistant entities using the [Native API](https://esphome.io/components/api.html) with [User-Defined Actions](https://esphome.io/components/api.html#user-defined-actions). +ESPHome can retrieve the state of Home Assistant entities using the [Native API](https://esphome.io/components/api/) with [User-Defined Actions](https://esphome.io/components/api/#user-defined-actions). ### Home Assistant actions -ESPHome devices can call any [Home Assistant Action](https://esphome.io/components/api.html#homeassistant-service-action). This feature is not enabled by default for newly added devices but can be enabled through the options flow on a per-device basis. +ESPHome devices can call any [Home Assistant Action](https://esphome.io/components/api/#homeassistantaction-action). This feature is not enabled by default for newly added devices but can be enabled through the options flow on a per-device basis. ### Tag scanning support -The [Native API Component](https://esphome.io/components/api.html) also supports sending tag scan events to Home Assistant. See the [homeassistant.tag_scanned Action](https://esphome.io/components/api.html#homeassistant-tag-scanned-action) for more information. +The [Native API Component](https://esphome.io/components/api/) also supports sending tag scan events to Home Assistant. See the [homeassistant.tag_scanned Action](https://esphome.io/components/api/#homeassistanttag_scanned-action) for more information. ## Entity naming and IDs @@ -204,7 +204,7 @@ To troubleshoot your ESPHome devices, you can easily view live logs, whether you #### Using the **ESPHome CLI** -If you're using the **ESPHome CLI**, follow the instructions for the [logs Command](https://esphome.io/guides/cli.html#logs-command) to access the logs. +If you're using the **ESPHome CLI**, follow the instructions for the [logs Command](https://esphome.io/guides/cli/#logs-command) to access the logs. ### Obtaining logs from the device @@ -229,7 +229,7 @@ This integration supports reconfiguration, allowing you to make changes—such a ### Name conflict resolution -If Home Assistant detects multiple devices with the same [**name**](https://esphome.io/components/esphome.html#configuration-variables), it will automatically initiate **Name Conflict Resolution**. This process is designed to help you seamlessly replace a failed or retired device with new hardware, while preserving your existing configuration if desired. +If Home Assistant detects multiple devices with the same [**name**](https://esphome.io/components/esphome/#configuration-variables), it will automatically initiate **Name Conflict Resolution**. This process is designed to help you seamlessly replace a failed or retired device with new hardware, while preserving your existing configuration if desired. This process gives you two options: @@ -248,7 +248,7 @@ If you’re using the same YAML file on the new device, choose **Migrate**. If i To trigger Name Conflict Resolution, all of the following must be true: - The new device must be running **ESPHome 2025.4.0 or later**. -- The new device must use the same [**name**](https://esphome.io/components/esphome.html#configuration-variables) (not just the friendly name). +- The new device must use the same [**name**](https://esphome.io/components/esphome/#configuration-variables) (not just the friendly name). - The original (old) device must be **offline**. --- From 0e4f55c980a36b7045a88c6a3ef020983143b502 Mon Sep 17 00:00:00 2001 From: Gnnr <101181208+G-nn-r@users.noreply.github.com> Date: Wed, 3 Dec 2025 10:52:35 +0100 Subject: [PATCH 47/49] Add Verto (Plus) to supported devices (#42098) --- source/_integrations/fronius.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index 156bd21f1da..2c49091eec1 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -33,6 +33,7 @@ The integration supports all inverters with integrated Datamanager or external " - Symo - Symo Hybrid - Tauro +- Verto (Plus) Devices connected to those inverters or dataloggers are supported as well. From 41ff6691fd75bf64db7977490ba37415f135f0d6 Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 11:04:19 +0100 Subject: [PATCH 48/49] Remove MicroBot Push URL (#42087) --- source/_integrations/keymitt_ble.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/keymitt_ble.markdown b/source/_integrations/keymitt_ble.markdown index 28e027c9df3..9bd10a29fe4 100644 --- a/source/_integrations/keymitt_ble.markdown +++ b/source/_integrations/keymitt_ble.markdown @@ -15,7 +15,7 @@ ha_config_flow: true ha_integration_type: device --- -This integration allows you to locally control a [MicroBot Push](https://keymitt.com/products/microbot-push) (previously manufactured by Naran but now under the Keymitt brand). +This integration allows you to locally control a MicroBot Push (previously manufactured by Naran but now under the Keymitt brand). ### Prerequisites From 72ba6e57855f0fbf9a6c30a7ff27cae1b9ec83dc Mon Sep 17 00:00:00 2001 From: smarthome-10 Date: Wed, 3 Dec 2025 11:12:05 +0100 Subject: [PATCH 49/49] Remove URL form Lutron integration (#42062) --- source/_integrations/lutron.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/lutron.markdown b/source/_integrations/lutron.markdown index b089e3a3954..ef7166e4c12 100644 --- a/source/_integrations/lutron.markdown +++ b/source/_integrations/lutron.markdown @@ -27,9 +27,9 @@ ha_integration_type: integration ha_config_flow: true --- -[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches/dimmers, occupancy sensors, HVAC controls, etc. The `lutron` integration in Home Assistant is responsible for communicating with the main hub for these systems. +[Lutron](https://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches/dimmers, occupancy sensors, HVAC controls, etc. The `lutron` integration in Home Assistant is responsible for communicating with the main hub for these systems. -Presently, there's only support for communicating with the [RadioRA 2](http://www.lutron.com/en-US/Products/Pages/WholeHomeSystems/RadioRA2/Overview.aspx) Main Repeater and only handle light switches, dimmers, and seeTouch keypad scenes. +Presently, there's only support for communicating with the RadioRA 2 Main Repeater and only handle light switches, dimmers, and seeTouch keypad scenes. ## Configuration