NEW
• "Not reporting" status. A battery sensor frozen on one value for weeks is broken whether it reads 1% or 100%. Those used to look healthy; now they're called out with how long they've been stuck.
• Battery replacement detection. Swapping a cell while the app was closed previously went unnoticed, so lifetime estimates never improved. Replacements are now found from your stored history and confirmed once the new level holds.
• Per-device battery ranges. Few devices report a clean 0-100%, so HA Monitor learns each one's real full and empty points from observed cycles and rates severity against that.
• Broken integrations. Integrations that failed to set up have no entities to give them away, so nothing in the app could see them. They now appear with Home Assistant's own reason text.
• Home Assistant notices. Persistent notifications, including failed login attempts, now surface on the Overview.
• battery_low sensors. For many Z-Wave and Zigbee devices this is the only battery signal they expose, and it was previously ignored entirely.
IMPROVED
• Real room names, read from your Home Assistant areas instead of guessed from entity names.
• Remaining-life estimates no longer project from sensors that have stopped moving, which is what produced the occasional "decades remaining" on a dead device.
• Zigbee signal thresholds recalibrated against what Zigbee2MQTT and ZHA actually emit — a healthy mesh no longer reports as poor.
• Dismissed discoveries are no longer reported as failures, which was burying the genuine ones.
• Battery cards now show true status: a frozen sensor is no longer drawn as a healthy full battery.
• Faster Overview, and battery history moved out of preferences storage so it stays off the launch path.
• VoiceOver labels across the battery and issue lists, which previously read as disconnected fragments.
FIXED
• A crash when a sensor reported an unusable value, such as nan or a number far outside the expected range. Some devices emit this routinely for a reading they can't take.
• An expired or revoked token now offers Reconnect instead of an error with no way forward.
• A stalled connection no longer blocks every later refresh until the app is force-quit.
• Onboarding animation no longer briefly draws two rows on top of each other.
• Hiding a battery no longer counted it as healthy in the Overview totals.