Skip to content

Commit 78ce9e2

Browse files
committed
Release 2026.8.2
1 parent e48e792 commit 78ce9e2

20 files changed

Lines changed: 148 additions & 71 deletions

ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ coalesces redraws into one `requestAnimationFrame` pass, owns its own
108108
lock-step. The `<svg>` is bound to the card box (`contain: paint`): its building
109109
paths reach a whole neighbourhood past the card, and without that bound an old iOS
110110
compositor sized the layer's backing store to that content, capped it and painted
111-
only the top half (#304); binding it also trims the off-card raster on every frame.
111+
only the top half; binding it also trims the off-card raster on every frame.
112112
Colour math (building tint, day / night grading of the ground + buildings) lives in
113113
`core/render-kit/colors.ts`, over the shared hex primitives in
114114
`core/render-kit/hex.ts`; the shared 2D point type + SVG-points formatter live in

CHANGELOG.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,20 @@ A corrective release on top of 2026.8.1.
1414
### Fixed: the card rendered only in half 3D on some older iPads
1515

1616
On older iPads, older WebKit could composite the flat basemap over the 3D scene
17-
incorrectly, leaving the card looking cut in half. Helios now detects those devices,
17+
incorrectly, leaving the card looking cut in half (#304). Helios now detects those devices,
1818
including inside the Home Assistant and Kiosk apps, not just Safari, and paints the
1919
ground already projected into the scene, so the whole card renders. The perspective
2020
on the map's vector elements is very slightly different on that path, but the scene
21-
is whole again. Every other device is unchanged.
21+
is whole again. Every other device is unchanged. Thanks to @Spaniard85 for testing
22+
the fix on the affected hardware.
2223

23-
### Changed: the battery detail panel marks its state of charge as an average
24+
### Changed: the detail panel now names its period, and marks averages with Ø
2425

25-
The state-of-charge line in the battery detail panel is the average over the shown
26-
period, not the live level. It now carries the same approximately-equal marker the
27-
panel already uses elsewhere, so it no longer reads as the current charge. Thanks to
28-
@stalakerob for the suggestion.
26+
The detail panel shows the selected period as its title, so every figure reads as a
27+
total or average over that window, not a live value. Averages (including the battery
28+
state of charge) now carry a Ø mean symbol instead of the old approximately-equal
29+
sign, which wrongly suggested a rough value. Thanks to @stalakerob for the nudge on
30+
the battery line (#331).
2931

3032
---
3133

README.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@
99
A Home Assistant card that turns your Energy dashboard into a living scene:
1010
what your home produces, stores and consumes, as the sun crosses your sky.
1111

12-
<img src="images/helios-preview.gif" alt="The Helios card: the sun crossing its arc over a home, the day's production curve rising around the house, live production and consumption chips following along." width="880">
12+
<img src="images/preview_01.png" alt="The Helios card: the day's production curve arcing over the home along the sun's path, with the live production and consumption chips and the timeline below." width="880">
1313

1414
[**Live demo**](https://helios-ha.org/helios/) &nbsp;&nbsp; [**Documentation**](https://helios-ha.org/help/) &nbsp;&nbsp; [**Roadmap**](https://helios-ha.org/roadmap/)
1515

16-
[![HACS default](https://img.shields.io/badge/HACS-Default-41BDF5.svg)](https://hacs.xyz/)
17-
[![License: GPL-3.0](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
18-
[![Stars](https://img.shields.io/github/stars/ReikanYsora/Helios?style=flat&color=e0a106)](https://github.com/ReikanYsora/Helios/stargazers)
19-
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support-FFDD00?logo=buymeacoffee&logoColor=000000)](https://www.buymeacoffee.com/reikanysora)
16+
[![Release](https://img.shields.io/github/v/release/ReikanYsora/Helios?display_name=tag&style=for-the-badge&color=e0a106)](https://github.com/ReikanYsora/Helios/releases)
17+
[![HACS Default](https://img.shields.io/badge/HACS-Default-e0a106.svg?style=for-the-badge)](https://github.com/hacs/default)
18+
[![License](https://img.shields.io/github/license/ReikanYsora/Helios?style=for-the-badge&color=blue)](https://www.gnu.org/licenses/gpl-3.0)
19+
[![Stars](https://img.shields.io/github/stars/ReikanYsora/Helios?style=for-the-badge&color=e0a106)](https://github.com/ReikanYsora/Helios/stargazers)
20+
[![Downloads](https://img.shields.io/github/downloads/ReikanYsora/Helios/total?style=for-the-badge&color=e0a106&label=downloads)](https://github.com/ReikanYsora/Helios/releases)
21+
[![Community: Discussions](https://img.shields.io/badge/community-discussions-e0a106?style=for-the-badge&logo=github&logoColor=white)](https://github.com/ReikanYsora/Helios/discussions)
22+
[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-support-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=000000)](https://www.buymeacoffee.com/reikanysora)
2023

2124
</div>
2225

@@ -128,11 +131,9 @@ against.
128131
129132
<br>
130133
131-
<img src="images/preview_01.png" alt="Helios: the live 2.5D scene with the sun's arc, the production and consumption chips and the timeline below.">
134+
<img src="images/preview_02.png" alt="Helios: the live flow with the production, battery, grid, home and device chips around the house, and the sun's irradiance.">
132135
133-
<img src="images/preview_02.png" alt="Helios: the day's curve standing on the sun's ground track around the home, with a per-source breakdown.">
134-
135-
<img src="images/preview_03.png" alt="Helios: the scene with cast building shadows and the detail panel open on a chip.">
136+
<img src="images/preview_03.png" alt="Helios: a custom-themed scene with the chip cluster and the timeline below.">
136137
137138
An interactive live demo is at [helios-ha.org](https://helios-ha.org/helios/).
138139

dist/helios.js

Lines changed: 48 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

images/preview_01.png

-19.6 KB
Loading

images/preview_02.png

-63.3 KB
Loading

images/preview_03.png

-42.8 KB
Loading

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "helios",
3-
"version": "2026.8.2-b2",
3+
"version": "2026.8.2",
44
"description": "HELIOS - real-time solar exposure, cloud cover and PV production card for Home Assistant",
55
"license": "GPL-3.0-or-later",
66
"type": "module",

src/core/render-kit/geometry.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ export interface ClipRect
2121
//The card box grown by a margin. The margin keeps a clipped edge (and its stroke) off the visible
2222
//card, which ha-card already hides, while still bounding the painted ink to near the card box. On
2323
//old iOS WebKit the composited SVG layer's backing store is sized to its painted ink: unclipped it
24-
//spans the whole projected neighbourhood, overflows the layer-size cap and paints only its top half
25-
//(issue #304). Trimming the geometry also shrinks the per-frame SVG string on every device.
24+
//spans the whole projected neighbourhood, overflows the layer-size cap and paints only its top half.
25+
//Trimming the geometry also shrinks the per-frame SVG string on every device.
2626
const CLIP_MARGIN = 32;
2727

2828
export function cardClipRect(width: number, height: number): ClipRect

src/css/helios-card-scene-css.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export const heliosCardStyles = css`
110110
/* Screen-space scene SVG: cast shadows + extruded buildings repainted every frame.
111111
Full-size overlay above the ground, click-transparent (the HUD SVGs own their pointer events).
112112
The building/shadow paths extend far past the card (a whole neighbourhood projected), so this element's
113-
painted content is much larger than its box. On old iOS (issue #304) the compositor then sized this
113+
painted content is much larger than its box. On old iOS the compositor then sized this
114114
layer's backing store to that content, blew the OS layer-size cap and painted only its top half. contain:
115115
paint + overflow:hidden bound the layer to the card box (what we actually see), so the backing store stays
116116
card-sized and the whole scene paints. No visible change elsewhere: off-card paint was already clipped. */
@@ -364,6 +364,23 @@ export const heliosCardStyles = css`
364364
pointer-events: none;
365365
-webkit-font-smoothing: antialiased;
366366
}
367+
/* Panel title: the selected rolling period, so the figures below never read as a live value. */
368+
.detail-panel .dp-title
369+
{
370+
align-self: stretch;
371+
text-align: center;
372+
font-size: var(--ha-font-size-xs, 10px);
373+
font-weight: 700;
374+
letter-spacing: 0.04em;
375+
text-transform: uppercase;
376+
color: var(--detail-accent, var(--primary-color, #03a9f4));
377+
padding-bottom: 4px;
378+
margin-bottom: 2px;
379+
border-bottom: 1px solid var(--divider-color, rgba(0, 0, 0, 0.12));
380+
white-space: nowrap;
381+
overflow: hidden;
382+
text-overflow: ellipsis;
383+
}
367384
.detail-panel .dp-row
368385
{
369386
display: flex;
@@ -377,6 +394,17 @@ export const heliosCardStyles = css`
377394
flex: 0 0 auto;
378395
color: var(--detail-accent, var(--primary-color, #03a9f4));
379396
}
397+
/* The Ø average marker, held to the same 16px column as the icons so the min / avg / max rows line up. */
398+
.detail-panel .dp-row .dp-glyph
399+
{
400+
flex: 0 0 auto;
401+
width: 16px;
402+
text-align: center;
403+
font-size: 15px;
404+
line-height: 1;
405+
font-weight: 700;
406+
color: var(--detail-accent, var(--primary-color, #03a9f4));
407+
}
380408
.detail-panel .dp-row span
381409
{
382410
flex: 1 1 auto;

0 commit comments

Comments
 (0)