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