diff --git a/haos-addon/config.yaml b/haos-addon/config.yaml
index bb633fe..af26c6c 100644
--- a/haos-addon/config.yaml
+++ b/haos-addon/config.yaml
@@ -1,5 +1,5 @@
name: ShineBridge
-version: "1.9.0"
+version: "1.9.1"
slug: shinebridge
description: Energiemanagement für Growatt/Goodwe-Wechselrichter — PV-Überschussladen, Wallbox-EMS, Tarifvergleich, Zigbee2MQTT-Überschussgeräte
url: https://gitea.bitfire.work/retr0/shinebridge
diff --git a/haos-addon/src/web/index.html b/haos-addon/src/web/index.html
index 32c05db..ceb99b7 100644
--- a/haos-addon/src/web/index.html
+++ b/haos-addon/src/web/index.html
@@ -797,11 +797,16 @@ async function loadFinance() {
`;
// ── SVG-Balkendiagramm ────────────────────────────────────────
- const W = 600, H = 180, PL = 44, PR = 12, PT = 10, PB = 28;
+ // Breite skaliert mit der Anzahl Tage (Mindestplatz pro Tag), statt bei vielen
+ // Tagen alles in eine feste Breite zu quetschen — sonst werden Balken bei
+ // langen Abrechnungsjahren (>60 Tage) zu Haarlinien und unlesbar.
+ const H = 180, PL = 44, PR = 12, PT = 10, PB = 28;
+ const n = days.length;
+ const MIN_SLOT = 10; // px pro Tag (Balkenpaar + Abstand), unterhalb dessen nichts mehr lesbar ist
+ const W = Math.max(600, PL + PR + n * MIN_SLOT);
const cW = W - PL - PR;
const cH = H - PT - PB;
- const n = days.length;
- const barW = Math.max(2, Math.floor(cW / n) - 2);
+ const barW = Math.max(3, Math.floor(cW / n) - 2);
const gap = Math.max(1, Math.floor(cW / n) - barW);
const allVals = days.flatMap(d => [d.fixed_eur, d.spot_eur].filter(v => v != null));
@@ -816,6 +821,9 @@ async function loadFinance() {
yLabels += `