v1.9.2
🌼 Pollen Levels v1.9.2
🛠️ Maintenance + performance release focused on safer shutdown behavior, stricter numeric/coordinate validation, faster coordinator parsing, and stronger diagnostics hardening.
🚀 Highlights
-
🧯 Cleaner shutdown/reload behavior
- Coordinator updates now re-raise
asyncio.CancelledErrorso shutdown/reload cancellations are not wrapped asUpdateFailed.
- Coordinator updates now re-raise
-
📍 Safer coordinates before setup
- Config-entry coordinates are validated as finite and in-range before setup.
- Invalid coordinates now trigger
ConfigEntryNotReady(retry) instead of generating malformed requests.
-
⚡ Faster coordinator parsing & deterministic ordering
- Forecast extraction is cheaper by building per-day type/plant lookup maps in a single pass and reusing them across parsing.
- Plant day-0 maps are reused for current-day sensors, and type-code processing is sorted for deterministic sensor key ordering.
- Plant-code matching is normalized across days so forecast attributes stay populated even if API casing changes.
-
🧼 Harder numeric guards & safer diagnostics
- Numeric parsing now rejects non-finite values (NaN/Inf) defensively and avoids runtime errors, including color channel parsing.
- Numeric config/options fields now enforce integer-only inputs, rejecting decimals consistently and aligning runtime parsing with config-flow rules.
- Diagnostics now:
- clamps
request_params_example.daysto supported forecast ranges, - drops non-finite rounded coordinates,
- and adds stronger tests to validate active secret redaction behavior.
- clamps
🔧 Detailed changes
[1.9.2] – 2026-02-13
Fixed
- Re-raised
asyncio.CancelledErrorduring coordinator updates to avoid wrapping shutdown/reload cancellations asUpdateFailed. - Validated config-entry coordinates as finite and in-range values before setup to avoid malformed requests and retry with
ConfigEntryNotReadywhen invalid.
Changed
- Reduced coordinator parsing overhead by building per-day type/plant lookup maps in a single pass and reusing them across forecast extraction.
- Reused cached day-0 plant maps for current-day plant sensors and sorted type-code processing for deterministic sensor key ordering.
- Normalized plant-code matching across days to keep plant forecast attributes populated even when API casing differs between days.
- Clamped diagnostics
request_params_example.daysto supported forecast ranges and handled non-finite values defensively. - Hardened numeric parsing guards for config/options inputs and color channels to safely reject non-finite values without raising runtime errors.
- Dropped non-finite rounded coordinates in diagnostics request examples to keep support payloads consistent and safe.
- Kept plant
codeattributes in their day-0 API form while using normalized keys internally for cross-day forecast matching stability. - Enforced integer-only parsing for numeric config/options fields to reject decimal inputs consistently.
- Strengthened diagnostics tests with active redaction behavior checks for secret fields in support payloads.
- Aligned runtime integer parsing with config-flow rules (reject non-integer numeric values) and reduced coordinator forecast overhead by reusing offset maps and plant-key lists during attribute enrichment.
If you’re upgrading from 1.9.1, pay special attention to:
- Any automations/templates that might have been passing decimal values into numeric options (these are now rejected consistently).
- Diagnostics exports (should be smaller, safer, and consistently redacted).
Full Changelog: v1.8.6...v1.9.2