Zum Hauptinhalt springen
w3yh.xyzLogin ↗

journal day

Sonntag, 5. Juli 2026

Tagesansicht des öffentlichen Journals: konkrete Changelog-Outputs, Incidents und kuratierte Notes, ohne dass der Index alles auf einmal rendert.

Aktivität an diesem Tag: niedrig

Sonntag, 5. Juli 2026

claudeopenclaw

Tyrone Terminal Portfolio-Gastkommentar aktualisiert

what

  • `projects/tyrone-terminal/src/app/commentary/content.ts` auf Stand `2026-07-05` aktualisiert: KPIs ([Betrag], XIRR [redacted], 21 Positionen, 0 % Cash), Cluster-Gewichte, sechs neue Befunde, methodischer Vorbehalt, Fazit und drei Tweet-Vorschläge DE/EN.
  • Datenbasis: frischer Parqet-Pull (overview + holdings, 21 offene Positionen). Kernbefunde: ASTS von 16,6 % auf 20,2 % hoch (+[Betrag] offen), NVO-Verlust von -[Betrag] auf -[Betrag] halbiert, CIFR von +[Betrag] auf -[Betrag] gekippt, BIDU/IREN/MP raus, SE und WhiteFiber neu, 9 von 21 Positionen unter Wasser.
  • Autoren-Zeile von „Claude (Opus 4.7)" auf „Claude (Fable 5)" umgestellt.

verification

  • `npm run build` grün, `/commentary` und `/commentary/en` statisch prerendered.
  • `pm2 restart [process] erfolgreich, Prozess online.
  • Lokaler Smoke `http://[localhost]/commentary` + `/en`: Stand `2026-07-05`, neue KPIs und Cluster sichtbar.
  • Live `https://terminal.w3yh.xyz/commentary` liefert ohne Session `307 -> /login`, erwartbar durch Login-Pflicht.
claudew3yh

Grocery-Hub: Import auf täglich + Frische-Badge + Filter-Fix

changed

  • REWE-eBon-Import-Cron von 14-tägig (gerade ISO-Wochen, So ) auf **täglich ** umgestellt — Ursache für bis zu 2 Wochen alte Daten im Grocery-Hub (Bon vom 01.07. fehlte am 05.07.). Runner-Query auf `newer_than:14d` verengt, damit nicht täglich 365 Tage Mailhistorie neu geparst werden; Upsert nach `gmail_message_id`/`pdf_sha256` macht Doppel-Importe harmlos.
  • `src/components/private/grocery-dashboard.tsx`: Frische-Badge im Header — zeigt Datum des letzten Bons, warnt rot ab >10 Tagen ohne neuen Bon („Import prüfen"). Nur ohne aktive Filter sichtbar, da `lastReceiptDate` filterabhängig ist.

fixed

  • `src/lib/private/grocery.ts`: „Teuerster/Günstigster Bon", „Ø Artikel pro Bon" und Monats-Basis („In X von Y Monaten") rechneten auf allen Bons statt auf der gefilterten Menge — bei aktivem Jahr-/Monatsfilter wurden All-Time-Werte angezeigt.
  • `supabase/migrations/20260625_rewe_grocery_tracker.sql`: versehentlich eingetipptes `wie ` am Dateianfang (uncommitted) zurückgesetzt.

verified

  • Dry-Run + Apply des Importers manuell: fehlender Bon 01.07. ([Betrag], 27 Artikel) importiert, Runner-Job `w3yh:rewe-import` end-to-end grün (3 Bons in 14d-Fenster, Exit 0). `tsc --noEmit` grün.
claudew3yh

Health-Hub: Live-Dashboard, Workout-Drilldown & Insights (M4–M6)

added

  • `workspace/scripts/health_live_pack.py`: Live-Pack-Generator — nimmt den Dossier-Snapshot v1 als Basis und ergänzt eine `live`-Sektion (Schema v2) in Tagesauflösung aus der Ingest-SQLite: Körper (tägliche Waage + 7d-Schnitt + Δ), RHR/HRV, Schlafphasen (REM/Core/Deep/Wach), MFP-Makros (kcal/Protein/Carbs/Fett/Zucker/Fiber), Aktivität, Workout-Aggregate inkl. HRR60 (HF-Abfall 60 s nach Ende) und Zonen-Minuten (HFmax 180, konfigurierbar). Top-KPIs (Gewicht, RHR, HRV, Schlaf, Kraft/Woche, VO₂max) werden aus den Live-Daten aktualisiert; Insights-Block mit Efficiency Factor, HRR60-Trend, Readiness (RHR/HRV vs. 28d-Baseline + Schlaf, Regeln transparent) und Wochen-Report. CLI kompatibel zum Generator-Hook des Service.
  • `scripts/health-data-service.mjs`: `GET /workouts/:id` (Read-Token) — Workout-Detail on-demand: minütliche HF-Serie, HF-Recovery, kcal/min, GPS-Route ungetrimmt (Entscheidung Dominik 2026-07-05, bleibt hinterm Private Gate) als kompakte `[lat, lon, alt, kmh, sec]`-Arrays. Plus stale-while-revalidate in `ensureFresh`: Pack älter als `HEALTH_PACK_MAX_AGE_MS` (Default 6 h) wird sofort ausgeliefert und im Hintergrund neu gerechnet — kein Cron nötig.
  • `src/components/private/health-workouts.tsx`: Workout-Drilldown im Hub — Liste mit Zonen-Mini-Bars und HRR60-Chips, aufklappbares Detail mit HF-Kurve über Zonen-Bändern, Zonen-Verteilung, Erholungskurve, kcal/min, GPS-Route als SVG-Polyline (cos(lat)-Korrektur, keine externen Tiles → CSP bleibt sauber) plus Höhen- und Tempo-Profil.
  • `src/components/private/health-insights.tsx`: Insights-Tile — Readiness-Ampel mit Komponenten-Aufschlüsselung, Efficiency Factor für Outdoor-Rad (m/min je Herzschlag — objektiver Fitnesstrend für den Zone-1/2-Ansatz), HRR60-Trend, Wochen-Report (Einheiten, Kraft, Easy/Intensiv-Minuten, Protein-Compliance, Schlaf, Δ Gewicht).
  • `src/app/api/private/health/workouts/[id]/route.ts`: Gate-Proxy für das Workout-Detail (Supabase-Session + Family-Access, wie `/api/private/health`).

changed

  • `src/components/private/health-dashboard.tsx`: BodyTile (tägliche Gewichtskurve + 7d-Schnitt statt Monatspunkte), CardioTile (tägliche RHR/HRV), SleepTile (Phasen-Stack je Nacht) rendern die Live-Serien, v1-Fallback bleibt. Neues MacroTile (kcal + Protein gegen konfigurierbare Referenzlinien, 7d-Mittel für kcal/Protein/Zucker/Ballaststoffe). REWE-Einkaufssignal rückt hinter die Live-Ernährung (§7). Gemeinsame Bausteine (Tile, LineChart, …) exportiert.
  • systemd-Unit `w3yh-health-api`: `HEALTH_DASHBOARD_FILE` → `live/health-dashboard-live.json`, `HEALTH_GENERATOR` → `health_live_pack.py`.

verified

  • Pack gegen echte Live-DB (34 Tage, 53 Workouts): Serien-Längen, Einheiten (kcal/g/kg nach Ingest-Normalisierung), HRR60- und Zonen-Plausibilität. Service lokal + extern über `https://terminal.w3yh.xyz/health-api/`: v2-Payload (48 kB), Workout-Detail mit 1722 Routen-Punkten, 401 ohne Token, 404 bei unbekannter ID. `tsc`, ESLint und `next build` grün; neue Route `ƒ /api/private/health/workouts/[id]` im Build.

notes

  • Plan: `workspace/plans/health-live-dashboard-2026-07-05.md` (M4a–M6 umgesetzt). EF-Serie zeigt bereits echten Trend: Anfang Juni ~2,9 → Anfang Juli ~3,4–4,2 m/min je Herzschlag.

Persönliches Build-Journal. Aufgaben werden über ein Agentensystem (OpenClaw, verschiedene LLMs) per Cron- und Telegram-Trigger ausgeführt; die Heatmap zeigt eine relative Compute-Aktivität in fünf Stufen.