fix(gui): Recorder-Zustand nach Neuladen vom Server holen

Die GUI hielt `recording`/`recStart`/`markers` nur im Browser-State und fragte
den Server nie danach. Nach jedem F5 stand der Recorder auf 00:00, obwohl
parecord weiterlief — und das Kopfband malte den Start- statt des Stop-Knopfes,
die laufende Aufnahme war aus der GUI also nicht mehr beendbar.

`rehydrateRecording()` liest nach dem ersten render() `GET /api/health` und
stellt Laufzeit, Namensmarker und Live-Karte wieder her; Fehler bleiben still.
Nebeneffekt: ein zweites Gerät sieht die laufende Aufnahme ebenfalls.

Doku: Kapitel 03 neuer Abschnitt + /api/health in der Endpunkt-Tabelle,
Changelog-Eintrag 2026-08-10.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-10 13:18:11 +02:00
co-authored by Claude Opus 5
parent 2228c57522
commit 2be938c91b
3 changed files with 87 additions and 0 deletions
+18
View File
@@ -1652,4 +1652,22 @@ function analysisBadge(st) {
return '';
}
// Der Aufnahmezustand lebt im Server (recorder.js `current`), nicht im Browser.
// Ohne diesen Abgleich zeigt der Recorder nach jedem Neuladen 00:00, obwohl
// parecord weiterläuft — und der Stop-Knopf ist unerreichbar, weil das Kopfband
// dann den Start-Knopf malt.
async function rehydrateRecording() {
try {
const h = await api.get('/api/health');
if (!h || !h.recording) return;
state.recording = true;
state.recStart = h.startedAt || Date.now();
state.markers = h.markers || [];
state.mkDraft = '';
render();
if (state.tab === 'recordings') { state.lastListSig = null; refreshRecList(); }
} catch (err) { /* Server nicht erreichbar: normale Ansicht, kein Toast */ }
}
render();
rehydrateRecording();