v2.2.0
2.2.0
Stable release for the 2.2.0 cycle.
This release focuses on reliability, safer error handling, stale-data protection, forecast extraction cleanup, validation consistency, CI alignment, and documentation polish.
Added
- Added stale-data expiration for malformed Google Pollen API payloads: cached coordinator data is now reused only while it remains within the effective TTL.
- Added repository guidance for future agent reviews to avoid overengineering defensive parsing and tests for highly unlikely upstream payload shapes.
Changed
- Hardened HTTP and config-flow error redaction so API keys and precise coordinates are redacted from client and validation error messages.
- Centralized latitude and longitude validation across config flow and runtime setup.
- Centralized forecast sensor mode and forecast-days compatibility validation across setup and options flow.
- Cached daily summary sensor payloads per coordinator data object to avoid redundant
daily_summary(...)recomputation for the same sensor update. - Refactored coordinator forecast extraction to reuse shared private helpers for API date extraction, forecast entry construction, and forecast list construction.
- Aligned package, release, and regular test validation by compiling Python sources and running Ruff, Black, and pytest before release packaging.
- Audited and streamlined the test suite while preserving coverage for redaction, validation helpers, stale-data TTL behavior, forecast extraction, config flow validation, and Home Assistant setup flows.
- Polished documentation around API key sharing, Google Maps Platform pricing/quota verification, quota-cap latency, and Markdown callout formatting.
Fixed
- Prevented indefinitely stale pollen data from remaining available when the API repeatedly returns missing or invalid
dailyInfoafter a previous successful refresh. - Prevented malformed forecast date payloads from interrupting otherwise usable coordinator updates.
- Preserved D+1/D+2 type sensor shaping when forecast days contain missing indexes, malformed dates, or malformed forecast index payloads.
- Ensured config-flow error placeholders use safe fallback messages when upstream exception messages are empty.
- Prevented precise invalid stored coordinates from being logged during runtime setup failures.
Validation
- Lint: success.
- Tests: success,
283 passed. - Validate with hassfest: success.
- Validate with HACS: success.
- Release workflow validates the ZIP structure before uploading
pollenlevels.zip.
Notes
- No entity IDs, unique IDs, translation keys, public sensor keys, Home Assistant minimum version, or Python requirement were changed in this final release.
- This release includes the changes previously tested through the 2.2.0 alpha and beta pre-releases.
What's Changed
- Harden release asset validation by @eXPerience83 in #99
- Harden sensitive HTTP error redaction by @eXPerience83 in #100
- Unify config validation helpers by @eXPerience83 in #102
- Cache daily summary sensor payloads by @eXPerience83 in #104
- Prepare 2.2.0-alpha1 pre-release by @eXPerience83 in #105
- Expire stale coordinator data by @eXPerience83 in #106
- Prepare 2.2.0-alpha2 pre-release by @eXPerience83 in #107
- Refactor coordinator forecast extraction by @eXPerience83 in #108
- Prepare 2.2.0-beta1 pre-release by @eXPerience83 in #109
- Audit and streamline test suite by @eXPerience83 in #110
- Align tests workflow with compile validation by @eXPerience83 in #111
- Polish pre-RC documentation notes by @eXPerience83 in #112
- Polish documentation callout formatting by @eXPerience83 in #113
- Prepare 2.2.0-rc1 pre-release by @eXPerience83 in #114
- Prepare 2.2.0 final release by @eXPerience83 in #115
Full Changelog: v2.1.1...v2.2.0