Fixed
- Locale-language battery proposals can now be approved — @hruba202's Czech-prose discovery proposal for a door-lock battery (#522) was marked unsupported for three stacked reasons, all fixed: the
entities[sensor.x].stateevidence format is now parsed (index-based brackets still resolve nothing), the English low-battery signal is read from the machine-generated candidate ID when the title/summary are written in the home's language (matched on whole slug tokens, and scoped to battery routing only), and a single unambiguous locale-named sensor (Czechbaterie) is promoted as the battery sensor. Thresholds parse comma decimals ("pod 20,5 %" → 20.5) and candidate-ID-embedded values (…_battery_below_10→ 10%), with an explicit percent in the summary taking precedence. - Approving a battery proposal now verifies the sensor really is a battery — the live entity must resolve and be battery-like (battery device class, a
%unit without a conflicting class, or a battery-named ID whose metadata doesn't contradict it) with a numeric or transiently-unavailable state. Sensors that fail the check are dropped, and if none remain the approval is refused with an honestnot_battery_sensorreason instead of registering a rule that would alert forever on, say, a temperature reading (21 °C is "below 40") or silently never fire on a text state. - Battery proposals now dedup correctly against their approved rules — the semantic keys that suppress re-proposals mirror the normalizer exactly: unified qualifier words (low/below/under/weak), battery candidates keyed on the battery sensor rather than a cited lock or contextual entity, and night/occupancy wording no longer stops a battery candidate from matching its always-on rule. The evidence-mismatch guard and the proposals card parse the new evidence format too, so card badges, severity, and the GitHub issue prefill agree with what the server registers — and ASCII candidate IDs produce the same rule id on both sides (non-ASCII IDs get a stable server-side digest suffix).
Full Changelog: v3.23.0...v3.23.1