Radial sundial v12 , dashboard done
Hour labels: HTML overlay, constant CSS pixels
The labels are pulled OUT of the SVG and rendered as an absolutely-positioned HTML overlay sibling. The previous betas left them as SVG <text> nodes, the viewBox / display ratio scaled the text along with the rest of the SVG content so the font-size token (var(--ha-font-size-s)) was multiplied by the SVG up-scale in panel-view dashboards.
The HTML overlay matches the SVG's footprint (min(100%, 92%) + aspect-ratio: 1/1, centred via flex on the wrap). Each label positions via JS-computed left / top percentages + a translate(-50%, -50%) + rotate() that matches the radial orientation. Font-size is now just plain CSS pixels (HA --ha-font-size-s, default 13 px), the labels read at the same on-screen size in section-view AND panel-view.
Daily aggregates as the default badge value
The chip-strip badges now show a daily AGGREGATE as the default state (no hover). The badge swaps to the hovered hour's reading only while the pointer is over the dial.
- Irradiance , daily mean (W/m²)
- Cloud , daily mean coverage (%)
- Production , day's total energy (kWh)
- Battery , day's NET energy in kWh (sum of charge minus discharge over the day; positive when the battery ended fuller, negative when it ended emptier)
The battery badge tint (charge-green vs discharge-amber) tracks the SIGN of the relevant value , the daily-net sign by default, the hovered-hour sign during hover. Dead-zone thresholds keep the badge from flickering a stray +0 / −0 around idle hours or balanced days.