Skip to content

v1.9.2

Choose a tag to compare

@eXPerience83 eXPerience83 released this 14 Feb 08:23
87dc783

🌼 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.CancelledError so shutdown/reload cancellations are not wrapped as UpdateFailed.
  • 📍 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.days to supported forecast ranges,
      • drops non-finite rounded coordinates,
      • and adds stronger tests to validate active secret redaction behavior.

🔧 Detailed changes

[1.9.2] – 2026-02-13

Fixed

  • Re-raised asyncio.CancelledError during coordinator updates to avoid wrapping shutdown/reload cancellations as UpdateFailed.
  • Validated config-entry coordinates as finite and in-range values before setup to avoid malformed requests and retry with ConfigEntryNotReady when 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.days to 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 code attributes 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