diff --git a/app/web/src/main.js b/app/web/src/main.js
index 0e8da84..05dcb47 100644
--- a/app/web/src/main.js
+++ b/app/web/src/main.js
@@ -98,9 +98,14 @@ function sysmonMarkup() {
–
-
+
Speicher für Aufnahmen
Aufnahmen–
+
+
Noch frei–
+
Gesamt für Aufnahmen–
+
100 % = freier Platz + alle vorhandenen Aufnahmen
(also der Platz eines frisch aufgesetzten Systems)
+
Partition gesamt–
@@ -152,7 +157,11 @@ function paintSysmon(s) {
set('[data-disk-pct]', p + '%');
const ring = document.querySelector('[data-disk-ring]');
if (ring) ring.setAttribute('stroke-dasharray', `${Math.max(0, Math.min(100, s.disk.usedPct)).toFixed(1)} 100`);
+ const db = document.querySelector('[data-disk-bar]'); if (db) db.style.width = Math.min(100, s.disk.usedPct) + '%';
set('[data-disk-used]', `${sysGb(s.disk.recBytes)}${s.disk.recFiles ? ` · ${s.disk.recFiles} Dateien` : ''}`);
+ set('[data-disk-free]', sysGb(s.disk.freeBytes));
+ set('[data-disk-total]', sysGb(s.disk.budgetBytes));
+ set('[data-disk-part]', `${sysGb(s.disk.totalBytes)} · ${Math.round(s.disk.partPct)} % belegt`);
}
const cpu = s.cpu ? s.cpu.pct : 0;
diff --git a/app/web/src/style.css b/app/web/src/style.css
index 66443ce..83697d5 100644
--- a/app/web/src/style.css
+++ b/app/web/src/style.css
@@ -161,7 +161,7 @@ nav { display: flex; gap: 6px; flex-wrap: wrap; }
/* Klappkarte bei Mauskontakt (oder Tastaturfokus) */
.sys-pop {
display: none; position: absolute; top: calc(100% + 8px); right: 0; z-index: 60;
- min-width: 215px; max-width: 300px; padding: 10px 12px; color: var(--fg);
+ min-width: 215px; padding: 10px 12px; color: var(--fg);
background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
box-shadow: 0 8px 24px rgba(0, 0, 0, .28);
}
@@ -170,9 +170,17 @@ nav { display: flex; gap: 6px; flex-wrap: wrap; }
font-size: 11px; font-weight: 700; color: var(--muted);
text-transform: uppercase; letter-spacing: .05em; margin-bottom: 7px;
}
-.sys-row { display: flex; justify-content: space-between; gap: 14px; font-size: 13px; padding: 2px 0; }
+/* Beschriftung und Wert bleiben je einzeilig — sonst rutscht z. B. die Einheit
+ („GB“) allein in die nächste Zeile und sieht aus wie ein fehlender Wert.
+ Die Karte wächst stattdessen in die Breite. */
+.sys-row { display: flex; justify-content: space-between; gap: 18px; font-size: 13px; padding: 2px 0; white-space: nowrap; }
.sys-row span { color: var(--muted); }
.sys-row b { font-weight: 600; font-variant-numeric: tabular-nums; }
+.sys-pop-disk { min-width: 285px; }
+.sys-pop-disk .sys-note { white-space: normal; }
+.sys-note { font-size: 11px; line-height: 1.35; color: var(--muted); margin: 6px 0 4px; }
+.sys-row.sys-sub { border-top: 1px solid var(--line); margin-top: 4px; padding-top: 5px; font-size: 12px; }
+.sys-row.sys-sub b { font-weight: 500; color: var(--muted); }
.sys-bar { height: 5px; border-radius: 3px; background: var(--inset); overflow: hidden; margin: 3px 0 7px; }
.sys-bar i { display: block; height: 100%; background: var(--accent); transition: width .4s ease; }
.sys-chip.ok .sys-bar i { background: var(--ok); }
diff --git a/docs/07-betrieb.md b/docs/07-betrieb.md
index f8977c6..5b09e02 100644
--- a/docs/07-betrieb.md
+++ b/docs/07-betrieb.md
@@ -88,7 +88,7 @@ Boards ohne SSH zeigen:
| Symbol | Zeigt an | Klappkarte bei Mauskontakt |
|---|---|---|
-| Ring + Prozentzahl | Anteil des **Aufnahme-Vorrats**, den die Aufnahmen schon belegen | eine Zeile: Aufnahmen in GB + Dateizahl |
+| Ring + Prozentzahl | Anteil des **Aufnahme-Vorrats**, den die Aufnahmen schon belegen | Aufnahmen (GB + Dateizahl) mit Balken, Noch frei, Gesamt für Aufnahmen, Partition als Fußzeile |
| Ventilator | CPU-Last — je höher, desto schneller die Drehung | CPU % (+ Kernzahl), RAM % mit GB, Temperatur mit Zone |
**Bezugsgröße der Prozentzahl** (Wunsch des Nutzers, 2026-08-17): nicht die Partition, sondern der Platz,
@@ -100,10 +100,17 @@ belegt = Summe aller Audiodateien unter recordings/
```
System, Modelle und `node_modules` zählen also weder oben noch unten mit — die Anzeige beantwortet
-„wie viel von meinem Aufnahme-Vorrat ist weg?“ und nicht „wie voll ist die eMMC?“. Die Klappkarte zeigt
-auf Wunsch des Nutzers **nur noch** die Zeile „Aufnahmen: x,y GB · n Dateien“; Restplatz, Vorratsgröße,
-Erklärtext und Partitionswert wurden wieder entfernt. Die Zahlen dahinter liefert `/api/sysstat`
-weiterhin (`freeBytes`, `budgetBytes`, `partPct`) — nur die GUI zeigt sie nicht mehr an.
+„wie viel von meinem Aufnahme-Vorrat ist weg?“ und nicht „wie voll ist die eMMC?“ (der `df`-Wert steht
+als Fußzeile in der Klappkarte).
+
+**Mitgezählt wird jede Audiodatei unter `recordings/`, nicht nur die MP3s** — zu jeder Aufnahme liegt
+dort auch die WAV-Rohdatei, und die ist rund viermal so groß wie das MP3 (Stand 2026-08-17: 52 MP3 =
+0,39 GB, 51 WAV = 1,57 GB). Ebenso zählen die Aufnahmen im **Papierkorb** mit, denn deren Dateien
+liegen bis zum Ablauf der 30 Tage weiter auf der Platte (Stand 2026-08-17: 16 aktiv, 36 im Papierkorb).
+
+**Zeilenumbruch:** `.sys-row` steht auf `white-space: nowrap`, die Karte wächst stattdessen in die
+Breite (`.sys-pop-disk { min-width: 285px }`). Vorher rutschte bei „Gesamt für Aufnahmen 27,5 GB“ die
+Einheit allein in die nächste Zeile und sah aus wie ein fehlender Wert.
- Datenquelle: `GET /api/sysstat` (`app/sysstat.js`). `/proc`, `fs.statfsSync` und ein **gepufferter**
Größenscan über `recordings/` (`readdir` rekursiv + `stat`, TTL 60 s, nur Audio-Endungen) — **kein**
diff --git a/docs/08-changelog.md b/docs/08-changelog.md
index 982bf75..d2d04e0 100644
--- a/docs/08-changelog.md
+++ b/docs/08-changelog.md
@@ -3,17 +3,24 @@
Chronik der Entwicklungsschritte. **Regel: jede zukünftige Änderung bekommt hier einen Eintrag** (Datum,
Was, Warum, betroffene Dateien/Backups).
-## 2026-08-17 (Nachtrag 2) — Speicherkarte auf eine Zeile gekürzt
+## 2026-08-17 (Nachtrag 3) — Karte wieder vollständig, dafür umbruchfrei
-Der Nutzer wollte alles unterhalb der GB-Zeile weg: Fortschrittsbalken, „Noch frei“, „Gesamt für
-Aufnahmen“, der Erklärtext und die Partitions-Fußzeile sind raus, übrig bleibt
-„Aufnahmen: 1,8 GB · 103 Dateien“. Die Prozentzahl steht ohnehin am Ring in der Kopfzeile.
+Der vermeintlich „fehlende Wert“ war ein **Zeilenumbruch**: bei „Gesamt für Aufnahmen 27,5 GB“ rutschte
+die Einheit allein in die nächste Zeile. Also alles wieder rein (Balken, „Noch frei“, „Gesamt für
+Aufnahmen“, Erklärtext, Partitions-Fußzeile) und stattdessen der Umbruch abgestellt:
+`.sys-row { white-space: nowrap }` + `.sys-pop-disk { min-width: 285px }`, der Erklärtext darf als
+einziger weiter umbrechen. Die in Nachtrag 2 entfernte Media-Query bleibt entfernt — die Prozentzahl am
+Ring war unter 900 px Fensterbreite ausgeblendet, das soll sie nicht sein.
-Dazu die Rückfrage „warum steht da kein Wert?“: Kandidat war der **unbeschriftete Balken** unter der
-Zeile (jetzt weg) — und die Media-Query `@media (max-width: 900px) { .sys-val { display: none } }`, die
-bei schmalem Fenster die Prozentzahl **neben dem Ring** ausblendete. Die Regel ist entfernt, die Zahl
-steht jetzt in jeder Fensterbreite. Nur Frontend geändert (`main.js`, `style.css` + Vite-Build), kein
-Dienstneustart.
+Nur Frontend (`main.js`, `style.css` + Vite-Build), kein Dienstneustart.
+
+## 2026-08-17 (Nachtrag 2) — Speicherkarte kurzzeitig auf eine Zeile gekürzt
+
+Auf Zuruf alles unterhalb der GB-Zeile entfernt (Balken, „Noch frei“, „Gesamt für Aufnahmen“,
+Erklärtext, Partitions-Fußzeile) und die Media-Query
+`@media (max-width: 900px) { .sys-val { display: none } }` gestrichen, die bei schmalem Fenster die
+Prozentzahl neben dem Ring ausblendete. Die Kürzung wurde in Nachtrag 3 wieder zurückgenommen, das
+Entfernen der Media-Query bleibt.
## 2026-08-17 (Nachtrag) — Ventilator statt Turbine, Speicher relativ zum Aufnahme-Vorrat