Files
ARIA-AGENT/tools
duffyduck 11b205ddaf fix(chat): chat_backup ts auf UNIX-ms umgestellt + Doppelpost-Schutz
Bug-1: _append_chat_backup nutzte asyncio.get_event_loop().time() —
das ist Container-Monotonic (bei Restart wieder 0), NICHT UNIX-Zeit.
Bridge schrieb so Eintraege mit ts wie 394M (=6.5 min Uptime), App-side
generiert User-Bubbles mit Date.now() = 1.778e12. Beim Sortieren in
der App: Server-Bubbles landeten alle als "uralt" (kleine ts) ueber den
lokalen Bubbles und teilweise unter dem 500er-Cap raus — Symptom:
"alles nach Hello Kitty fehlt in der App".

Fix: _append_chat_backup nutzt jetzt time.time() * 1000 (UNIX-ms).

Bug-2: doppelte User-Bubble nach App-Hintergrund/Restart mit Retry-Knopf.
Race-Fix von vorhin (text+timestamp-Heuristik, 5-Min-Fenster) griff
nicht weil bei kaputten Server-ts (394M) und lokalen UNIX-ms (1.778e12)
das Diff 1.7 Billionen ms war → Fenster nie zutreffend → lokale Bubble
blieb als Duplikat.

Fix: Text-Match alleine reicht — wenn der Server irgendwo eine
textgleiche User-Bubble hat, ist es dieselbe Nachricht. Greift jetzt
unabhaengig von ts-Konsistenz.

Plus: tools/migrate_chat_backup_ts.py — repariert vorhandene jsonl
(284 von 299 Eintraege auf der VM hatten Container-Uptime-ts). Datei-
Reihenfolge bleibt erhalten (war eh chronologisch), ts werden ab File-
Mtime rueckwaerts 60s-Schritten vergeben. Idempotent, .bak-Backup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 11:26:39 +02:00
..

tools/

Hilfsskripte für die Dev-Maschine. Brauchen .claude/aria-vm.env (aus .example kopieren + lokale VM-IP eintragen).

fetch-app-logs.sh

Holt App-Crash-Logs von der VM und speichert sie unter .aria-debug/ (gitignored). Die App schickt JS-Errors und ungefangene Promise- Rejections via RVS an die Bridge — Bridge sammelt in /shared/logs/app.log, Diagnostic-Server gibt sie via GET /api/app-log raus.

tools/fetch-app-logs.sh                # 200 neueste Eintraege
tools/fetch-app-logs.sh --limit 50     # weniger
tools/fetch-app-logs.sh --watch        # alle 5s pollen, neue rausgeben
tools/fetch-app-logs.sh --clear        # nach Abholen Log auf VM leeren

Ausgabe enthaelt pro Eintrag: Uhrzeit, Level (error/warn/info), Scope (z.B. ChatScreen.InboxModal oder global-fatal), Message, und die ersten ~8 Stack-Frames. Die kompletten Daten liegen als JSON in .aria-debug/app-log-<timestamp>.json.

Workflow nach einem Crash:

  1. App rebuilden mit Crash-Reporting (passiert automatisch ab dem 21a315c-Commit)
  2. Crash in der App ausloesen
  3. tools/fetch-app-logs.sh auf der Dev-Maschine
  4. Stacktrace lesen / Claude geben
  5. Fix bauen
  6. tools/fetch-app-logs.sh --clear damit der Log wieder sauber ist