fix(app): Absturzschleife — Auto-Re-Download holte ungefragt ein 150-MB-Video
Die Absturzschleife (alle ~70s, stundenlang) war selbsttragend: App startet → Auto-Re-Download fordert 2s spaeter ALLE fehlenden Anhaenge an, ohne Groessen-Grenze → Bridge schickt das 150-MB-Video als ~200 MB base64 in EINER WebSocket-Nachricht → die App muss das puffern und durch JSON.parse schicken → nativer OOM (kein JS-Fehler, darum nie ein Stacktrace) → Android startet den Vordergrund-Dienst neu → App startet → von vorn. Dieselbe Nachricht hat parallel whisper/f5tts/voxtral mit Code 1009 umgebracht — darum lag der Absturz immer direkt hinter dem Audio-Abbau, und darum kam jede gerade laufende Sprachaufnahme nie an. Drei Bremsen: - Auto-Re-Download ueberspringt alles ueber 25 MB. Bleibt als "150 MB — tippen zum Laden" stehen; der User entscheidet. - Ausdrueckliches Antippen bremst bei 64 MB mit einer ehrlichen Meldung samt Server-Pfad, statt die App zu killen. - Der Brotkrumen wird von der Crash-Meldung nicht mehr ueberschrieben. Bisher merkte sich der zweite Absturz nur noch "letzte Aktivitaet: Crash-Meldung" — in einer Schleife war nach dem ersten Durchlauf jede Spur weg. Diagnose kam aus /shared/logs/app.log (app_log via RVS), kein ADB noetig. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -49,8 +49,15 @@ const BREADCRUMB_KEY = 'aria_last_breadcrumb';
|
||||
let _breadcrumb: { ts: number; scope: string; message: string } = { ts: 0, scope: '', message: '' };
|
||||
let _breadcrumbDirty = false;
|
||||
|
||||
/** Letzte App-Aktivitaet merken — Crash-Kontext fuer den naechsten Boot. */
|
||||
/** Letzte App-Aktivitaet merken — Crash-Kontext fuer den naechsten Boot.
|
||||
*
|
||||
* Die Crash-Meldung selbst darf den Brotkrumen NICHT ueberschreiben: sonst
|
||||
* merkt sich der zweite Absturz nur noch "letzte Aktivitaet: Crash-Meldung",
|
||||
* der dritte "letzte Aktivitaet: Crash-Meldung ueber Crash-Meldung" — und bei
|
||||
* einer Absturzschleife ist nach dem ersten Durchlauf jede Spur weg. Genau
|
||||
* das ist passiert; die eigentliche Ursache stand nur in der ERSTEN Meldung. */
|
||||
export function noteBreadcrumb(scope: string, message: string): void {
|
||||
if (scope === 'app.crash-detected') return;
|
||||
_breadcrumb = { ts: Date.now(), scope: scope || '', message: String(message || '').slice(0, 120) };
|
||||
_breadcrumbDirty = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user