✨ New Features & 🐛 Bug fixes
⚠️ Breaking change
🏠 include_area_on_duplicate_names is now include_area_names
The option that appends an entity's area to its name has been renamed, and its behaviour simplified. If you used the old key, rename it:
# before
include_area_on_duplicate_names: true
# now
include_area_names: trueIt no longer waits for two entities to share a name — every entity with an area gets it. The old rule made your legend change shape whenever an unrelated entity was added or removed. Entities you gave a Custom Name are untouched, and a name that already contains its area isn't doubled up.
✨ New in this release
➖ ref_entity — plot the difference of two entities, no need for template sensor anymore
Combine an entity with a second entity over time: indoor minus outdoor temperature, production minus consumption, target vs actual.
entities:
# ref_op defaults to subtract; with no name: the series is
# labelled "Indoor − Outdoor" automatically
- entity: sensor.indoor_temperature
ref_entity: sensor.outdoor_temperature
- entity: sensor.pool_temperature
ref_entity: weather.home
ref_attribute: temperature # read the reference from an attribute
ref_op: divide # subtract | add | multiply | divide
# + reverse_subtract (B−A), reverse_divide (B÷A)Each sample of your entity is combined with the reference value that was valid at that moment, so the result is a real time-aligned series rather than a single offset.
The reversed operators exist because swapping the two entity ids is not the same thing: the main entity decides the timeline, unit, aggregation and colour. Keep the better-sampled sensor as entity: and flip the arithmetic instead.
Two things to know:
subtract/addare refused withchange,diff,sumanddelta. Those aggregations already produce per-bucket differences, so subtracting on top of them is meaningless — the series renders empty with a console warning rather than a confident wrong number.multiply/dividework with any aggregation.- Nothing is invented before the reference exists. The reference is carried forward until it next changes (so a setpoint that changes twice a day works fine), but the stretch before its first sample is left as a gap. Add
break_on_null: trueif you'd rather the line break there.
The state row and trend arrow follow the combined series, so the header always agrees with the chart. Editor: entity → Advanced → Reference Entity / Operation / Reference Attribute.
🔤 state_timeline_label_font_size — size the labels inside State Timeline segments
The state name drawn inside each segment was fixed at 10 px. It is now configurable:
chart_mode: state_timeline
state_timeline_show_labels: true # default
state_timeline_label_font_size: 16 # px, 6-40, default 10A larger label simply shows fewer characters in a narrow segment instead of spilling out of it. In the editor the field sits next to Show State Labels under Visual Options, and appears only while that toggle is on.
🛠 Fixes & reliability
🏷️ State Timeline: long entity names were cropped by the edge of the card
A long friendly name in chart_mode: state_timeline ran off the left side of the card, leaving only its tail visible (…oom Contact Sensor Door).
The label column now sizes itself to the text and grows with the card, and a name that still doesn't fit wraps onto up to three lines — left-aligned, with the row growing to match — so the whole name stays readable on a narrow card, a More Info dialog or a phone:
bu uzun bir
isimdir deneme
amaçlı
Only a name too long even for three lines is shortened, and that one keeps the full text as a hover tooltip. A short name gives its space back to the timeline.
🔍 Visual editor: the Entity field could come up blank (#322)
Two separate faults left the Entity field empty on a card that was graphing perfectly well.
Switching back from the YAML tab left the picker unrendered for the rest of the session — editing the YAML again didn't help, and only saving the card and reopening the editor brought it back. The Tap Action and Battery entity pickers had the same problem. All three now render reliably.
Entities whose state isn't a number — a climate entity's state is heat — were also missing from the picker, even when the card was graphing one of their numeric attributes:
entities:
- entity: climate.lounge_heating
attribute: current_temperatureclimate, humidifier, water_heater and friends are now selectable, matching how Home Assistant's own History treats them, and whatever is already configured is always offered so the field can't be blank for a working card.
The Other badge on such a row is not an error — it marks a series that reads from an attribute, fixed value or state map, and therefore has no long-term statistics.
🔄 The Invert (Mirror) checkbox was hidden outside Timeline mode (#324)
invert: true was only offered in the editor in Timeline mode, so on a Waterfall chart — where inverting is the documented way to express a subtraction step — the checkbox simply wasn't there. You had to write it in YAML, or switch to Timeline, tick it, and switch back.
invert has always worked in every chart mode; only the editor field was hidden. The checkbox now appears in all modes, on the per-entity Advanced tab next to Fixed Value.