Skip to content

✨ New Features & πŸ› Bug Fix

Latest

Choose a tag to compare

@cataseven cataseven released this 11 Oct 13:22
86be748

πŸ“Š pie_style: bar β€” The pie as one horizontal 100 % bar (#422)

2026-10-11 16_15_25-4 06-chgmeas js - Notepad

The Pie chart gets a fifth style: one full-width horizontal bar instead of a ring. Each entity is a segment, in your YAML order, as wide as its share of the total β€” 10.8 kWh from the grid, 9.6 kWh from solar and 3.6 kWh from the battery give segments of 45 %, 40 % and 15 %. The strip is 28 px tall and the card shrinks around it, so it works as a compact composition summary above a timeline of the same period, especially on phones:

chart_mode: pie
pie_style: bar                 # classic | thick | donut | thin | bar
pie_label_format: percentage   # value (default) | percentage | both
show_state: false
entities:
  - entity: sensor.grid_import_energy
    aggregate_func: change       # counters: consumption over the period
    color: "#E24B4A"
  - entity: sensor.solar_self_consumed
    aggregate_func: change
    color: "#EF9F27"
  - entity: sensor.battery_discharged
    aggregate_func: change
    color: "#1D9E75"

Everything else is the pie you know: the period pickers and sync groups, aggregate_func and the transforms, the legend, the state-row share, and hovering or tapping a segment shows its name, value, unit and share. pie_spacing becomes a gap in pixels between the segments, labels are left out of segments too narrow for them, and height is only needed when you want the strip centred in a taller area. The center total and pie_3d do not apply to the bar. Editor: Chart Settings β†’ Chart β†’ Pie Style β†’ Bar.


πŸ›  Fixes & reliability

  • The last point of a live line chart is stamped at the refresh time instead of its bucket midpoint: the CSV export's last row and the tooltip header of the running bucket show that time, as they already did on Show Full Period cards; when the clock crosses into the next bucket the previous point settles back on its midpoint. Live cards also rebuild every series on each live update, as Show Full Period cards do
  • A state strip over a numeric attribute (for example a fan's percentage drawn as graph_type: state_strip) now gets one colour per value, like a numeric sensor drawn as a strip; the labels are unchanged
  • Statistics-backed cards whose points_per_hour was finer than the statistics rows now have fewer points: a 14-day card with the default 2 points per hour draws 336 hourly buckets instead of 672 half-hour ones, so the CSV export halves and tooltip times land on the hour; totals, averages, minimums and maximums are the same. The same applies to data_source: statistics cards of 7 days or less with more than 12 points per hour, which now follow the 5-minute rows
  • A sensor whose own readings are already negative (grid export reported as βˆ’1200) drawn with invert: true and aggregate_func: max now shows the sensor's highest reading (the smallest export) instead of the largest magnitude. max means the sensor's highest value in the bucket on every path; use aggregate_func: min to show the peak export of a negative-valued sensor. The same applies to the single value shown in Pie, Polar Area, Radial Bar, Radar, Ranking and Waterfall charts, so such an entity can now rank differently or pass or fail ranking_min_value / ranking_max_value differently
  • Line and area entities that shared a stack_group on a card without stacked: true used to be stacked anyway; they now draw unstacked like every other entity on a non-stacked card. Set stacked: true to keep the stack
  • A stacked chart that mixes positive and negative values now looks different: the negative member's bar, hover dot and rounded corner move below the zero line and the Y axis gains a negative range. The tooltip Total row still shows the net sum
  • compare: yesterday is no longer exactly 24 elapsed hours on the day after a daylight-saving change (23 or 25 hours, the same wall-clock time the day before); use a numeric compare: 24 when you want exact hours
  • Multi-hour group_by buckets (2h … 12h) now start at local midnight. In a time zone whose UTC offset is not a multiple of the bucket size, bars and candles visibly move onto the hour grid (6h: from 03 / 09 / 15 / 21 to 00 / 06 / 12 / 18) and a previously missing first bar of the day reappears; CSV exports and tooltip headers follow
  • Date-picker Month and Year views now size themselves from the full period from day one. A Month view labels its day ticks as 5 Oct and then bare day numbers from the 1st (it used to show Mon 5 until late in the month), and with extended_window_multiplier a running period keeps a full extra period behind it (one extra week behind a Week view) and opens on the last full period ending now, like the Energy-dashboard sync
  • A state row whose entity has an explicit tap_action: action: none no longer toggles the entity's visibility β€” none now means do nothing on every surface, as in Home Assistant itself. Leave tap_action unset (Default action in the editor) to keep the visibility toggle on the state row
  • A numeric sensor with a numeric-valued state_map (for example state_map: [{ value: 10 }, { value: 20 }]) now plots live updates through the map exactly as it does from history β€” the band or step shows the mapped entry instead of the raw number
  • aggregate_func: change on a sensor without sum statistics no longer shows negative bars on long windows β€” a fall between two statistics rows used to count against the total; it now counts as a reset (0), as it always did on short windows. Use aggregate_func: diff when a fall is real movement