From a77bcd03552a52038a748bb3227d5c1e48cd19a6 Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Tue, 19 May 2026 17:39:43 +0200 Subject: [PATCH] Debug-Log: Fehler lokal erfassen + automatisch zum Server laden [apk] Damit App-Fehler (Scan/Sync) ohne Kabel nachvollziehbar sind: - debuglog.svelte.ts: faengt window.error, unhandledrejection und console.* in einem Ringpuffer ab, gespiegelt in Preferences (ueberlebt Neustart) - Auto-Upload zum neuen Endpoint applog.php (gedrosselt, best effort); ToolDialog- und Sync-Fehler werden explizit mitgeloggt - Seite Einstellungen -> Debug-Log: Eintraege ansehen, manuell senden, leeren - initDebugLog() zuerst in +layout onMount, damit Startfehler erfasst werden Co-Authored-By: Claude Opus 4.7 (1M context) --- src/lib/api.ts | 14 +++ src/lib/components/ToolDialog.svelte | 2 + src/lib/debuglog.svelte.ts | 159 ++++++++++++++++++++++++++ src/lib/sync.svelte.ts | 2 + src/routes/+layout.svelte | 2 + src/routes/debug/+page.svelte | 62 ++++++++++ src/routes/einstellungen/+page.svelte | 14 +++ 7 files changed, 255 insertions(+) create mode 100644 src/lib/debuglog.svelte.ts create mode 100644 src/routes/debug/+page.svelte diff --git a/src/lib/api.ts b/src/lib/api.ts index c08203e..4c6c7ee 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -215,3 +215,17 @@ export function syncProtocol(protocol: Protocol): Promise { export function pdfUrl(serverProtocolId: number): string { return `${serverUrl}${API_PATH}/pdf.php?id=${serverProtocolId}&jwt=${encodeURIComponent(token)}`; } + +export interface DebugLogUpload { + entries: { ts: number; level: string; msg: string }[]; + appVersion: string; + device: string; +} + +/** Debug-Log-Einträge zum Server übertragen (Endpoint applog.php) */ +export function uploadDebugLog(payload: DebugLogUpload): Promise<{ ok: boolean; stored: number }> { + return request<{ ok: boolean; stored: number }>('applog.php', { + method: 'POST', + body: JSON.stringify(payload), + }); +} diff --git a/src/lib/components/ToolDialog.svelte b/src/lib/components/ToolDialog.svelte index c35bb83..3956481 100644 --- a/src/lib/components/ToolDialog.svelte +++ b/src/lib/components/ToolDialog.svelte @@ -1,6 +1,7 @@ + + + +
+ + {uploadText} + +
+ +
+ {#if debugLog.entries.length === 0} +

Keine Einträge.

+ {:else} + {#each [...debugLog.entries].reverse() as e, i (i)} +
+ {fmtTime(e.ts)} + {e.msg} +
+ {/each} + {/if} +
diff --git a/src/routes/einstellungen/+page.svelte b/src/routes/einstellungen/+page.svelte index 95f9b29..64b4cfe 100644 --- a/src/routes/einstellungen/+page.svelte +++ b/src/routes/einstellungen/+page.svelte @@ -84,6 +84,20 @@

+ +
+

Diagnose

+

+ Bei Problemen (Scan/Sync schlägt fehl): Log öffnen und teilen. +

+ + Debug-Log öffnen + +
+