From 16d09d994a442c1e9f9f6b68ca010530ea0e58f3 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 15:02:43 +0930 Subject: [PATCH 01/29] Add quality scale for airnow integration --- .../components/airnow/quality_scale.yaml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 homeassistant/components/airnow/quality_scale.yaml diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml new file mode 100644 index 00000000000000..c93d94883a4f66 --- /dev/null +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -0,0 +1,28 @@ +rules: + # Bronze + action-setup: + status: exempt + comment: Integration does not register any custom actions. + appropriate-polling: + status: done + comment: Reports update every 30 minutes, matching AirNow's publish frequency. + brands: done + common-modules: done + config-flow-test-coverage: todo + config-flow: done + dependency-transparency: done + docs-actions: + status: exempt + comment: Integration does not register any custom actions. + docs-high-level-description: done + docs-installation-instructions: done + docs-removal-instructions: done + entity-event-setup: + status: exempt + comment: Integration does not use entity event setup. + entity-unique-id: done + has-entity-name: done + runtime-data: done + test-before-configure: done + test-before-setup: done + unique-config-entry: done From 14b74179b9830cc61ff05411c0eab12d806e1289 Mon Sep 17 00:00:00 2001 From: HoffmanEl <140370244+HoffmanEl@users.noreply.github.com> Date: Mon, 4 May 2026 15:19:20 +0930 Subject: [PATCH 02/29] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- homeassistant/components/airnow/quality_scale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index c93d94883a4f66..99be3fac5a6395 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -8,7 +8,7 @@ rules: comment: Reports update every 30 minutes, matching AirNow's publish frequency. brands: done common-modules: done - config-flow-test-coverage: todo + config-flow-test-coverage: done config-flow: done dependency-transparency: done docs-actions: From 01313253ce0320870cae57d1d5931d4c1edfc0eb Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 15:20:49 +0930 Subject: [PATCH 03/29] Add quality_scale to airnow manifest --- homeassistant/components/airnow/manifest.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/manifest.json b/homeassistant/components/airnow/manifest.json index da1c936b68fb71..3d5b44e1683288 100644 --- a/homeassistant/components/airnow/manifest.json +++ b/homeassistant/components/airnow/manifest.json @@ -7,5 +7,6 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pyairnow"], + "quality_scale": "legacy", "requirements": ["pyairnow==1.3.1"] -} +} \ No newline at end of file From aef1aa90c7dc122d461a64c003be3178fc7ecb28 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 15:24:58 +0930 Subject: [PATCH 04/29] Fix missing newline at end of manifest.json --- homeassistant/components/airnow/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/manifest.json b/homeassistant/components/airnow/manifest.json index 3d5b44e1683288..bcf8e2d38ba74a 100644 --- a/homeassistant/components/airnow/manifest.json +++ b/homeassistant/components/airnow/manifest.json @@ -9,4 +9,4 @@ "loggers": ["pyairnow"], "quality_scale": "legacy", "requirements": ["pyairnow==1.3.1"] -} \ No newline at end of file +} From 9f83309b0026924e452d875b63ceb24ffed3e133 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 15:36:46 +0930 Subject: [PATCH 05/29] Remove airnow from hassfest exception lists and clean up manifest --- homeassistant/components/airnow/manifest.json | 1 - script/hassfest/quality_scale.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/homeassistant/components/airnow/manifest.json b/homeassistant/components/airnow/manifest.json index bcf8e2d38ba74a..da1c936b68fb71 100644 --- a/homeassistant/components/airnow/manifest.json +++ b/homeassistant/components/airnow/manifest.json @@ -7,6 +7,5 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pyairnow"], - "quality_scale": "legacy", "requirements": ["pyairnow==1.3.1"] } diff --git a/script/hassfest/quality_scale.py b/script/hassfest/quality_scale.py index dd88ac6703520f..8d1a0d1af75ef3 100644 --- a/script/hassfest/quality_scale.py +++ b/script/hassfest/quality_scale.py @@ -127,7 +127,6 @@ class Rule: "aftership", "agent_dvr", "airly", - "airnow", "airq", "airthings", "airthings_ble", @@ -1094,7 +1093,6 @@ class Rule: "aftership", "agent_dvr", "airly", - "airnow", "airq", "airthings", "airthings_ble", From 719163b085cb57900ed65b35fe43688bc6af96c7 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 15:42:13 +0930 Subject: [PATCH 06/29] Declare airnow quality scale as bronze --- homeassistant/components/airnow/manifest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/airnow/manifest.json b/homeassistant/components/airnow/manifest.json index da1c936b68fb71..30c1e9db550cfa 100644 --- a/homeassistant/components/airnow/manifest.json +++ b/homeassistant/components/airnow/manifest.json @@ -7,5 +7,6 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pyairnow"], + "quality_scale": "bronze", "requirements": ["pyairnow==1.3.1"] } From c759b9d4367836447404ba5828f0806c57808e1f Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 15:47:36 +0930 Subject: [PATCH 07/29] Add data_description to airnow strings.json for bronze compliance --- homeassistant/components/airnow/strings.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 20aed65cc0f51c..c62acd063773a7 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -17,6 +17,9 @@ "longitude": "[%key:common::config_flow::data::longitude%]", "radius": "Station radius (miles; optional)" }, + "data_description": { + "api_key": "To generate an API key go to {api_key_url}" + }, "description": "To generate API key go to {api_key_url}" } } @@ -40,8 +43,11 @@ "init": { "data": { "radius": "Station radius (miles)" + }, + "data_description": { + "radius": "The radius in miles around your location to search for reporting stations." } } } } -} +} \ No newline at end of file From cd0aee83c16271a2aa07219bd2da27c58b70c004 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 15:50:29 +0930 Subject: [PATCH 08/29] Fix missing newline at end of strings.json --- homeassistant/components/airnow/strings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index c62acd063773a7..4bcc052310d8fb 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -50,4 +50,4 @@ } } } -} \ No newline at end of file +} From de95ddb81d47dab2b45e683fa01c2db5eae3b9d0 Mon Sep 17 00:00:00 2001 From: HoffmanEl <140370244+HoffmanEl@users.noreply.github.com> Date: Mon, 4 May 2026 15:54:53 +0930 Subject: [PATCH 09/29] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- homeassistant/components/airnow/quality_scale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index 99be3fac5a6395..f8e3aef2905670 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -5,7 +5,7 @@ rules: comment: Integration does not register any custom actions. appropriate-polling: status: done - comment: Reports update every 30 minutes, matching AirNow's publish frequency. + comment: Reports are polled every 30 minutes so newly published hourly AirNow reports are picked up promptly. brands: done common-modules: done config-flow-test-coverage: done From 294d21622e725ef463b5b06c558c27301bc7fea5 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 4 May 2026 16:00:20 +0930 Subject: [PATCH 10/29] Add data_description for all config flow fields in airnow strings.json --- homeassistant/components/airnow/strings.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 4bcc052310d8fb..6b2a6a0b995b6d 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -18,9 +18,12 @@ "radius": "Station radius (miles; optional)" }, "data_description": { - "api_key": "To generate an API key go to {api_key_url}" + "api_key": "To generate an API key, go to {api_key_url}.", + "latitude": "The latitude of your location.", + "longitude": "The longitude of your location.", + "radius": "The radius in miles around your location to search for reporting stations." }, - "description": "To generate API key go to {api_key_url}" + "description": "To generate an API key, go to {api_key_url}." } } }, From e1c753baaa8e56a4382ef60c77272b66c94eb83d Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 09:38:33 +0930 Subject: [PATCH 11/29] Add Silver/Gold/Platinum sections to airnow quality_scale.yaml --- .../components/airnow/quality_scale.yaml | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index f8e3aef2905670..5a7d856f4dad33 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -26,3 +26,26 @@ rules: test-before-configure: done test-before-setup: done unique-config-entry: done +# Silver + action-exceptions: todo + config-entry-unloading: todo + devices: todo + diagnostics: todo + discovery: todo + entity-category: todo + entity-disabled-by-default: todo + entity-translations: todo + exception-translations: todo + icon-translations: todo + reauthentication-flow: todo + repair-issues: todo + stale-devices: todo + system-health: todo + # Gold + log-when-unavailable: todo + parallel-updates: todo + test-coverage: todo + # Platinum + async-dependency: todo + inject-websession: todo + strict-typing: todo \ No newline at end of file From d58b5fce36671bf873f25110ee567820c4434f98 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 09:42:43 +0930 Subject: [PATCH 12/29] Fix indentation and missing newline in quality_scale.yaml --- homeassistant/components/airnow/quality_scale.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index 5a7d856f4dad33..90e609b0978a83 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -26,7 +26,7 @@ rules: test-before-configure: done test-before-setup: done unique-config-entry: done -# Silver + # Silver action-exceptions: todo config-entry-unloading: todo devices: todo @@ -48,4 +48,5 @@ rules: # Platinum async-dependency: todo inject-websession: todo - strict-typing: todo \ No newline at end of file + strict-typing: todo + \ No newline at end of file From 5136b20253a6c08e90cbdfe4bc1dd13d71078ab2 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 09:47:35 +0930 Subject: [PATCH 13/29] Fix trailing whitespace and newline at end of quality_scale.yaml --- homeassistant/components/airnow/quality_scale.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index 90e609b0978a83..26e11e982193a9 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -49,4 +49,3 @@ rules: async-dependency: todo inject-websession: todo strict-typing: todo - \ No newline at end of file From 06e2f6841856de2186fe3afe25a6dd9e08351b97 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 09:51:33 +0930 Subject: [PATCH 14/29] Remove invalid system-health rule from quality_scale.yaml --- homeassistant/components/airnow/quality_scale.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index 26e11e982193a9..186bfad8b39d70 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -40,7 +40,6 @@ rules: reauthentication-flow: todo repair-issues: todo stale-devices: todo - system-health: todo # Gold log-when-unavailable: todo parallel-updates: todo From b9f96d3327142517d1d4a53978f2642d575c79f9 Mon Sep 17 00:00:00 2001 From: HoffmanEl <140370244+HoffmanEl@users.noreply.github.com> Date: Tue, 5 May 2026 09:58:23 +0930 Subject: [PATCH 15/29] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- homeassistant/components/airnow/quality_scale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index 186bfad8b39d70..fd41b0eae58cb9 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -40,7 +40,7 @@ rules: reauthentication-flow: todo repair-issues: todo stale-devices: todo - # Gold + # Silver log-when-unavailable: todo parallel-updates: todo test-coverage: todo From ab7549f7b5771f08125f8cf5464c5f9ed187173d Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 10:09:35 +0930 Subject: [PATCH 16/29] Complete quality_scale.yaml with all Silver/Gold/Platinum rules --- .../components/airnow/quality_scale.yaml | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index fd41b0eae58cb9..526c41c3aa0c3c 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -2,7 +2,7 @@ rules: # Bronze action-setup: status: exempt - comment: Integration does not register any custom actions. + comment: Integration does not register custom actions. appropriate-polling: status: done comment: Reports are polled every 30 minutes so newly published hourly AirNow reports are picked up promptly. @@ -13,13 +13,13 @@ rules: dependency-transparency: done docs-actions: status: exempt - comment: Integration does not register any custom actions. + comment: Integration does not register custom actions. docs-high-level-description: done docs-installation-instructions: done docs-removal-instructions: done entity-event-setup: status: exempt - comment: Integration does not use entity event setup. + comment: Integration does not subscribe to events. entity-unique-id: done has-entity-name: done runtime-data: done @@ -29,21 +29,36 @@ rules: # Silver action-exceptions: todo config-entry-unloading: todo + docs-configuration-parameters: todo + docs-installation-parameters: todo + entity-unavailable: todo + integration-owner: todo + log-when-unavailable: todo + parallel-updates: todo + reauthentication-flow: todo + repair-issues: todo + test-coverage: todo + # Gold devices: todo diagnostics: todo discovery: todo + discovery-update-info: todo + docs-data-update: todo + docs-examples: todo + docs-known-limitations: todo + docs-supported-devices: todo + docs-supported-functions: todo + docs-troubleshooting: todo + docs-use-cases: todo + dynamic-devices: todo entity-category: todo + entity-device-class: todo entity-disabled-by-default: todo entity-translations: todo exception-translations: todo icon-translations: todo - reauthentication-flow: todo - repair-issues: todo + reconfiguration-flow: todo stale-devices: todo - # Silver - log-when-unavailable: todo - parallel-updates: todo - test-coverage: todo # Platinum async-dependency: todo inject-websession: todo From c92424186c5012fb5a5b24cea2b9f76380e2df60 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 10:16:10 +0930 Subject: [PATCH 17/29] Revert strings.json changes - will submit as separate PR --- homeassistant/components/airnow/strings.json | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 6b2a6a0b995b6d..20aed65cc0f51c 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -17,13 +17,7 @@ "longitude": "[%key:common::config_flow::data::longitude%]", "radius": "Station radius (miles; optional)" }, - "data_description": { - "api_key": "To generate an API key, go to {api_key_url}.", - "latitude": "The latitude of your location.", - "longitude": "The longitude of your location.", - "radius": "The radius in miles around your location to search for reporting stations." - }, - "description": "To generate an API key, go to {api_key_url}." + "description": "To generate API key go to {api_key_url}" } } }, @@ -46,9 +40,6 @@ "init": { "data": { "radius": "Station radius (miles)" - }, - "data_description": { - "radius": "The radius in miles around your location to search for reporting stations." } } } From 9cc287ebba2050d59fa3c3c41d935a8efeb1b934 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 10:35:14 +0930 Subject: [PATCH 18/29] Re-add data_description strings required by existing tests --- homeassistant/components/airnow/strings.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 20aed65cc0f51c..2b3d417abcf467 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -17,7 +17,13 @@ "longitude": "[%key:common::config_flow::data::longitude%]", "radius": "Station radius (miles; optional)" }, - "description": "To generate API key go to {api_key_url}" + "data_description": { + "api_key": "To generate an API key, go to {api_key_url}.", + "latitude": "The latitude of your location.", + "longitude": "The longitude of your location.", + "radius": "The radius in miles around your location to search for reporting stations." + }, + "description": "To generate an API key, go to {api_key_url}." } } }, From 6dc214e44a29d23c2cf2744860a7efd87f8c7994 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 10:46:14 +0930 Subject: [PATCH 19/29] Add data_description to airnow options flow strings --- homeassistant/components/airnow/strings.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 2b3d417abcf467..4018360c92167d 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -46,8 +46,11 @@ "init": { "data": { "radius": "Station radius (miles)" + }, + "data_description": { + "radius": "The radius in miles around your location to search for reporting stations." } } } } -} +} \ No newline at end of file From d2ea1ac1ed4164c5c73a3ac99469c55f3e19df0e Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 10:51:20 +0930 Subject: [PATCH 20/29] Fix missing newline at end of strings.json --- homeassistant/components/airnow/strings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 4018360c92167d..6b2a6a0b995b6d 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -53,4 +53,4 @@ } } } -} \ No newline at end of file +} From c61aaa3394d633cf5ba2ada94179788063e4c6ef Mon Sep 17 00:00:00 2001 From: HoffmanEl <140370244+HoffmanEl@users.noreply.github.com> Date: Tue, 5 May 2026 10:57:13 +0930 Subject: [PATCH 21/29] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- homeassistant/components/airnow/quality_scale.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index 526c41c3aa0c3c..6be07d07a5d2be 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -28,7 +28,7 @@ rules: unique-config-entry: done # Silver action-exceptions: todo - config-entry-unloading: todo + config-entry-unloading: done docs-configuration-parameters: todo docs-installation-parameters: todo entity-unavailable: todo From e9138cf978c7acb2ffd2426b7df98f4065db5970 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Tue, 5 May 2026 11:09:17 +0930 Subject: [PATCH 22/29] Update quality scale rules based on code review --- homeassistant/components/airnow/quality_scale.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index 6be07d07a5d2be..c9d79fd2922c8b 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -34,13 +34,12 @@ rules: entity-unavailable: todo integration-owner: todo log-when-unavailable: todo - parallel-updates: todo + parallel-updates: done reauthentication-flow: todo - repair-issues: todo test-coverage: todo # Gold devices: todo - diagnostics: todo + diagnostics: done discovery: todo discovery-update-info: todo docs-data-update: todo @@ -59,6 +58,7 @@ rules: icon-translations: todo reconfiguration-flow: todo stale-devices: todo + repair-issues: todo # Platinum async-dependency: todo inject-websession: todo From 87773a023d80d40e3f7b8ea970eee0cf067d6230 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 11 May 2026 14:47:47 +0930 Subject: [PATCH 23/29] Fix quality scale rules and revert strings per reviewer feedback --- homeassistant/components/airnow/strings.json | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 6b2a6a0b995b6d..20aed65cc0f51c 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -17,13 +17,7 @@ "longitude": "[%key:common::config_flow::data::longitude%]", "radius": "Station radius (miles; optional)" }, - "data_description": { - "api_key": "To generate an API key, go to {api_key_url}.", - "latitude": "The latitude of your location.", - "longitude": "The longitude of your location.", - "radius": "The radius in miles around your location to search for reporting stations." - }, - "description": "To generate an API key, go to {api_key_url}." + "description": "To generate API key go to {api_key_url}" } } }, @@ -46,9 +40,6 @@ "init": { "data": { "radius": "Station radius (miles)" - }, - "data_description": { - "radius": "The radius in miles around your location to search for reporting stations." } } } From 48c82cd59e0a0cbc9ca989853ff929f7ae027be6 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 11 May 2026 15:01:12 +0930 Subject: [PATCH 24/29] Add data_description to airnow options flow strings --- homeassistant/components/airnow/strings.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/homeassistant/components/airnow/strings.json b/homeassistant/components/airnow/strings.json index 2b3d417abcf467..6b2a6a0b995b6d 100644 --- a/homeassistant/components/airnow/strings.json +++ b/homeassistant/components/airnow/strings.json @@ -46,6 +46,9 @@ "init": { "data": { "radius": "Station radius (miles)" + }, + "data_description": { + "radius": "The radius in miles around your location to search for reporting stations." } } } From 4ec3d88889f45d24b9eeacf54141896a260aaef4 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 11 May 2026 15:06:37 +0930 Subject: [PATCH 25/29] Add comment to entity-device-class about ozone sensor --- homeassistant/components/airnow/quality_scale.yaml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/airnow/quality_scale.yaml b/homeassistant/components/airnow/quality_scale.yaml index c9d79fd2922c8b..ba7c6daf16fcb7 100644 --- a/homeassistant/components/airnow/quality_scale.yaml +++ b/homeassistant/components/airnow/quality_scale.yaml @@ -8,7 +8,7 @@ rules: comment: Reports are polled every 30 minutes so newly published hourly AirNow reports are picked up promptly. brands: done common-modules: done - config-flow-test-coverage: done + config-flow-test-coverage: todo config-flow: done dependency-transparency: done docs-actions: @@ -51,7 +51,9 @@ rules: docs-use-cases: todo dynamic-devices: todo entity-category: todo - entity-device-class: todo + entity-device-class: + status: todo + comment: The ozone sensor can still use the ozone device class. entity-disabled-by-default: todo entity-translations: todo exception-translations: todo @@ -60,6 +62,6 @@ rules: stale-devices: todo repair-issues: todo # Platinum - async-dependency: todo - inject-websession: todo + async-dependency: done + inject-websession: done strict-typing: todo From ed8690b5d5010469f5da82b0b7508b3fa2536230 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 11 May 2026 15:11:04 +0930 Subject: [PATCH 26/29] Trigger CI rerun From 66397b44e79a42598fd477e22705841027671251 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 11 May 2026 15:14:21 +0930 Subject: [PATCH 27/29] Remove quality_scale from manifest - not yet at bronze tier --- homeassistant/components/airnow/manifest.json | 1 - 1 file changed, 1 deletion(-) diff --git a/homeassistant/components/airnow/manifest.json b/homeassistant/components/airnow/manifest.json index 30c1e9db550cfa..da1c936b68fb71 100644 --- a/homeassistant/components/airnow/manifest.json +++ b/homeassistant/components/airnow/manifest.json @@ -7,6 +7,5 @@ "integration_type": "service", "iot_class": "cloud_polling", "loggers": ["pyairnow"], - "quality_scale": "bronze", "requirements": ["pyairnow==1.3.1"] } From 0f459c9126cc1023bfccf8eabb9908f06f457fd6 Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 11 May 2026 15:18:17 +0930 Subject: [PATCH 28/29] Add airnow back to INTEGRATIONS_WITHOUT_SCALE --- script/hassfest/quality_scale.py | 1 + 1 file changed, 1 insertion(+) diff --git a/script/hassfest/quality_scale.py b/script/hassfest/quality_scale.py index 8d1a0d1af75ef3..fd0727b82d5d7a 100644 --- a/script/hassfest/quality_scale.py +++ b/script/hassfest/quality_scale.py @@ -1093,6 +1093,7 @@ class Rule: "aftership", "agent_dvr", "airly", + "airnow" "airq", "airthings", "airthings_ble", From b55ea18210c21dcc0bd41cab0f1fc1000fbe952c Mon Sep 17 00:00:00 2001 From: HoffmanEl Date: Mon, 11 May 2026 15:21:46 +0930 Subject: [PATCH 29/29] Fix missing comma in INTEGRATIONS_WITHOUT_SCALE --- script/hassfest/quality_scale.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/hassfest/quality_scale.py b/script/hassfest/quality_scale.py index fd0727b82d5d7a..84857ca899efec 100644 --- a/script/hassfest/quality_scale.py +++ b/script/hassfest/quality_scale.py @@ -1093,7 +1093,7 @@ class Rule: "aftership", "agent_dvr", "airly", - "airnow" + "airnow", "airq", "airthings", "airthings_ble",