v2.9.0 — Outdoor mode, custom thresholds, compact mode, localization, and more
First stable release of the 2.9 line. Aggregates bug fixes plus six new features tested through three pre-release candidates.
Install via HACS: search for Air Quality Card → Update.
Bug fixes
- Graph X axis is now time-based (#22). Spikes appeared at the wrong X position when a sensor reported unevenly. Plotting now follows the configured time window, matching HA's native history-graph behavior.
- CO2 status label now shows all 5 tiers including "Moderate". Previously skipped tier — 800–1000 ppm was mislabeled.
- Humidity & temperature status at exact boundary values (50.0%, 60.0%, 22.0 °C, 24.0 °C, °F equivalents) now agree with the color.
New features
- #25 — Outdoor-only mode. Configure only
outdoor_*_entityentities (no indoor sensor required). The card promotes them to primary slots, computes the status badge from outdoor values, and hides the recommendation strip. - #23 — Min/max display via
show_min_max: true. Min/max values are overlaid at the actual data points on each graph, not as a separate caption — you see when the extremes happened. - #21 + #24 — Per-metric custom thresholds. Override any default with
<metric>_thresholds: [a, b, c, d]. Example for tropical climates:temperature_thresholds: [22, 25, 28, 31]. - #20 — Compact display mode via
display: compact. Title + status badge only, with HA-nativetap_action/hold_action/double_tap_action. Ideal for overview dashboards. Skips the history fetch for faster initial load. - #19 — Configurable sensor order via
order: [metric1, metric2, ...]. Use the visual editor's multi-select to tick metrics in display order. - #10 — Localization for the status badge, recommendations, recommendation subtitles, radon advisory titles, and editor labels. Languages: English, Spanish, French, German. Spanish/French/German contributed by @b0rv3g4r4 on PR #11 — thank you.
Other changes
- Internal refactor: per-metric color/status helpers now share a
METRIC_DEFStable with thresholds, color scales, and status labels. Easier to extend, less duplication, sets up future enhancements. - Updated
_renderGraphgradient stops to follow points by X position (not by index), so colors stay aligned with the time-based line. - README documents the
air_quality_entitypassthrough behavior (#18).
Known limitations
- Per-sensor status labels (Safe / Low / Moderate / High / Dangerous on each metric) are still in English regardless of language setting. The status badge at the top is translated. Will land in a follow-up.
- Radon advisory subtitle prose is still English; the title is translated.
- Reordering sensors via the editor stores values in click order — to reorder after the fact, untick and re-tick. A drag-handle widget would be the right follow-up.
Credits
- Translations: @b0rv3g4r4
- Thresholds: WHO 2021 Air Quality Guidelines, ASHRAE Standard 62.1, EPA carbon monoxide & radon guidelines
What's next
The 2.9 line is done. Future ideas filed in issues: a delta-based temperature comparison (#21 follow-up), Portuguese localization (offered by @mzspicoli on #10), drag-and-drop sensor reordering.
If you find a regression, please open an issue with your config and a screenshot.