Journey

Was bisher entstanden ist.

Kein Marketing-Rückblick, sondern der eigene Aufzeichnungsstand des Projekts: diese Seite wird aus dem Changelog und den Release-Notes im Repository erzeugt, bei jeder Änderung neu.

0Verbesserungen umgesetzt
0allein in den letzten 7 Tagen
0Rückmeldungen eingearbeitet
0Entwicklungsschritte dokumentiert
0Versionen an Tester verteilt

Blau markiert = eine Version, die an Tester ausgeliefert wurde

25. April 2026 → 18. Mai 2026

Zuletzt gepflegt am 18. Mai 2026 — seither sind 94 Tage vergangen, in denen weitergebaut wurde, ohne dass CHANGELOG.md nachgeführt wurde. Die Arbeit lief weiter — allein in den sieben Tagen vor dem 20. August 2026 wurden über 100 Änderungen zusammengeführt. Diese Timeline zeigt den dokumentierten Stand; der jüngste Teil wartet noch darauf, eingetragen zu werden.

  1. TestFlight Build 175

    Build-174-Feedback-Welle

    • 🔁 „Plan ändern" → Pause wird jetzt angewendet (vorher kam trotz Pause ein Cycling-Training — RLPolicy.pickSport hatte .rest nie als Kandidat). „Pause akzeptieren" öffnet nicht mehr die Ch…
    • 🏃 Lauf-Workout zeigt kein „% FTP"/Watt mehr — Power ist Rad-only.
    • 🔍 Decision Trail — Tier-1-Detent springt beim Zurück aufs Half-Sheet; lange Titel überschneiden sich nicht mehr.
    • 🏋️ Kraft-Workout strukturiert dargestellt (Übung · Sätze × Wdh · Pause).
  2. TestFlight Build 174

    Build-173-Feedback-Welle + Privacy-Rückbau

    • 🖼️ Icons — Sport-Glyphs zurück auf den V1-SF-Symbol-Satz (die bespoke Canvas-Glyphs renderten schlecht).
    • 🏠 Home — AUFBAU-Weißraum-Bug gefixt (Zonen-Label-Layout); Block-Reihenfolge: Check-in über Ziel; „Plan ändern" in die Hero-Card unter die CTA; echte Session-Anzahl statt hardcodiertem „zw…
    • 🧭 Multi-Sport — pro Einheit eigenes Detail + eigener „Belege"-Decision-Trail.
    • 🏋️ Workout-Detail — Sheet kompakter; Zeitfenster-Notiz eindeutig (Dauer pro Einheit).
  3. TestFlight Build 173

    Verlauf + Polish + Provider-Routing

    • 📊 Verlauf — HR-Kurve + Z1–Z5-Zonen-Grafik im Aktivitäts-Detail jetzt live (echte HealthKit-HF-Serie + LTHR-Zonen, statt leer); Provider-Mirror-Hinweis im Empty-State; 30-Tage-Load paralle…
    • 🏋️ Workout-Detail — Intensitäts-Profil-Grafik (Balken pro Abschnitt, Höhe/Farbe je Zone).
    • 🗣️ Trainings-Beschreibung — war teils englisch + mit Roh-Token (zone2_90); jetzt durchgehend Deutsch + humanisiert (Home-Hero, Decision Trail, Widget, Siri).
    • 😴 Schlaf-Bug — die 16-h-Doppelzählung trat bei zwei Schlaf-Quellen weiter auf; jetzt korrekt zusammengeführt (überlappende Nächte werden nicht mehr summiert).
  4. TestFlight Build 172

    FOCUS Feedback-Welle

    • 🏠 Home — alle 20 Build-171-Feedback-Punkte abgearbeitet: Slider nicht mehr versehentlich verstellbar, Belege-Screen-Kontrast, Marker zentriert, Multi-Provider-Export-Picker + Merken-Toggl…
    • 🔤 Dynamic Type — FOCUS-Schrift skaliert mit der iOS-Textgröße, Basis-Skala angehoben.
    • 🧭 Insights — "Datenanalyse"/Trends heißt jetzt Insights; Fortschritt-Politur.
    • ⚙️ Settings — alle 7 Drilldowns (Konto/Wettkämpfe/Sportarten/Datenquellen/Datenschutz/Speicher/Hilfe) vom alten DS-Design auf FOCUS migriert.
  5. TestFlight Build 171

    FOCUS Redesign komplett

    • 🎨 Das gesamte App-GUI ist FOCUS — Build 170 brachte den Home-Tab, Build 171 zieht FOCUS durch alle Surfaces: Fortschritt-Landing, Decision Trail (3-Tier), Verlauf (+ GPS-Karte), Trends (F…
    • 🏠 Home-Walkthrough-Fixes — Multi-Provider-Export-Picker, Hero-Tap → Workout-Detail, echte Trainings-Beschreibung, Rest-CTA-Bugfix, Alert-Resolve, Cross-Sport-Completion + ehrliche Abweich…
    • 🔤 Dynamic Type — die FOCUS-Typografie reagiert jetzt auf die iOS-Textgröße; Basis-Skala angehoben.
    • 🧹 Gamification (Streak/Achievements) app-weit entfernt — inkl. der Streak-Push-Benachrichtigungen.
  6. TestFlight Build 170

    FOCUS Home-Redesign — Go-Live

    • 🏠 FOCUS Home-Redesign live — der Home-Tab ist komplett neu: 6-Block-Layout (Header → Hero → Vitals → Ziel → Check-in → Manifesto), alle 7 Zustände FOCUS-nativ, kein Streak-Chip, keine Mor…
    • Verteilung: nur interne Tester — die externe Gruppe bleibt auf Build 169, bis FOCUS intern validiert ist.
    • Der alte Home-Code (HomeViewV2 + Sub-Komponenten) bleibt einen Build im Binary als Sofort-Rückroll-Pfad; Löschung folgt in einem späteren Build (Phase 6b).
  7. TestFlight Build 169

    • 😴 Sleep-Score-Recalibration — die Achsen-"100"-Anker von FeatureEngineer.sleepScore wurden von adäquat auf exzellent gehoben (Dauer 7.5 h → 8.0 h, Effizienz 88 % → 92 %, REM 1.7 → 1.8 h)…
    • 🧭 Post-Session Review — die abgeschlossene Session zeigt jetzt eine kombinierte Fläche: dein eigenes Feedback (RPE / Gefühl / Notiz) + ein deterministischer Coach-Read, der dein subjektiv…
  8. Build 167

    Ausgeliefert über TestFlight

    • Der "Aufholjagd"-Mechanismus (Wochenvolumen-Catch-up) feuerte falsch: ein gerade zurückgekehrter Athlet hat wenig trainiert → die Engine las das als "stark hinter dem Wochenziel" und schl…
    • Die Template-Auswahl war pausen-blind und konnte Vor-Verletzungs-Längen zurückgeben.
  9. TestFlight Build 168

    Sleep-Fusion

    • 😴 Sleep-Score-Provider-Fusion — provider-eigene Schlaf-Scores (Withings/Polar/WHOOP/Oura) fließen per Prioritäts-/Konsens-Blend in die Readiness-Schlaf-Achse. Behaviour-superset. SleepSco…
    • Builds 166/167: -Inc.2-Threshold-Layer, -DC-Welle, -Comeback-Cap + .
  10. Build 159

    Ausgeliefert über TestFlight

    • ✅ Recovery Score 3-axis composite (Plews/Buchheit canonical): HRV 40% + RHR 20% + Sleep 40%. Hero-Tile zeigt jetzt Recovery + Sleep statt readiness + injury. ( wave aus Build 158.)
    • ✅ Hero Tier-1 = HRV + RHR ( / Build 159): Real-time Vitalwerte vorn (4-Tile-Dashboard [Recovery] [Sleep · 7h 24m] [HRV ±%] [RHR ±bpm]). Abgeleitete Werte (Aerobic / Fatigue) wandern in Ti…
    • SafetyEngine contract types (V2Sport/V2SessionClass/V2Constraints — Codable, alias mapping, commutativity)
    • SafetyEngineHelpers static rules (data-warmup, deep-warmup, subjective-bad-axis-count, categorical-readiness for Garmin/Polar/Oura)
  11. Welle 7

    evening, Senior-Radar Cleanup + Engine-Hygiene autonomous bis Mitternacht

    • ✅ HealthKitManager Big-File-Split — SKIPPED: Datei hat nur EINE // MARK: Section in 1275 LOC. Kein klar vor-labelter "Pure helpers" Seam wie bei DailyStateService oder AppleHealthProvider…
    • Senior-Radar Issues M40 (calibrator-log) + M48 (V1-deprecation) closed.
    • ADR-0008 Big-File-Pattern auf 3 Dateien angewandt — Pattern jetzt canonical für künftige Splits.
    • Engine-Logging-Konvention etabliert: "Wenn Engine etwas Loggable berechnet, wird im Caller geloggt."
  12. Weiterentwicklung

    evening, non-UI test coverage push

    • 11 EN-leak fixes (3 in TrainingSessionPlanner.topDriver, 8 in ProviderConnectionService.userFacingMessage)
    • 0 production-code regressions (only string literals translated, no behavior changed)
  13. Weiterentwicklung

    → 2026-05-13 ( Sprint W → W++ → E.2 → E.3 → X → Y

    • 🪟 Card-system unified app-wide (Sprint W → W++) — new
    • 🔧 Engine progressive-overload fix (Sprint E.2) — new
    • 📦 Upload-quota pre-flight guard (against ITMS-90382) — new
    • 🎯 Architecture invariant pin (Sprint W++)
  14. Engine-Audit Sprint B/C/D/E/F: Multi-week Periodisation + 23 Provider-Extras + Coached-Plan-Comparator

    • 🩺 9+13 new Provider-Extras Rules in SafetyEngine (Sprint D Tier 1-3 + Tier 4-6):
    • Withings BP veto (stage 1/2), WHOOP daily strain, Polar Cardio Load, Garmin Body Battery High
    • Garmin Training Effect overreach, Withings body comp, Body temperature (Polar/Withings)
    • Multi-source SpO₂, Multi-source respiration
  15. TestFlight 1.0-beta8

    Ausgeliefert über TestFlight

    • Tages-Recap im HOME-Greeting — unter dem Datum + Begrüssung steht jetzt eine warme 2-3-Satz Tageszusammenfassung. Auf iOS 26 mit Apple Intelligence aktiv: LLM-generiert ("Heute fühlt sich…
    • Settings → Abo Section — neue Section zwischen "Konto" und "Datenquellen". In 1.0 sehen alle Tester die "Free"-Variante mit "Pro freischalten" CTA + 14-Tage-Trial-Badge. Beim Tap öffnet s…
    • Anomaly-Confirmation Card ( — bereits in beta7 gewired, jetzt LLM-explanation aktiv) — die Karte "Heute sieht's anders aus" auf dem HOME-Tab nutzt jetzt FoundationModels für die Erklärung…
    • Performance-Signposter auf 4 Hot-Paths — os_signpost Markers in V2DecisionPipeline.refresh, TrainingSessionPlanner.planSession, CoreMLRLPolicy.suggestAction, und AnomalyDetectionService.r…
  16. Weiterentwicklung

    → 2026-05-08 (28 PRs across two-day autonomous run: Mega-A/B/C/D + Connect IQ + Federated Learning + B5 LoRA + 5-Wave Senior Hardening

    • 🎯 All 4 Mega waves shipped — Mega-A Hardening, Mega-B Algorithmic Depth (TSS/TSB/Polarised/RaceTaper/RPE), Mega-C Trust Stack (DecisionTrail/ModelCards/DataLineage), Mega-D Engagement Loo…
    • 🧠 5-predictor ML Insights Service — SleepStageQualityScorer (B1) + HRVReadinessFusion (B2) + WorkoutQualityClassifier (B6) + ACWRAnomalyDetector (B7) + RecommendationExplanationService (B…
    • 🎮 Connect IQ companion app v=2 schema + complete Monkey-C app on ~/Desktop/DecisionEngine-CIQ/. Stage A scaffolding ready for Stage B activation when user sets up Garmin Developer account
    • 🤝 Federated Learning Stage A closes Manifest Layer 6. Protocol-based bridge with NoopCoordinator + DP-noise + L2-clip + k-anonymity floor (≥10 contributors). Awaiting user-side backend to…
  17. Weiterentwicklung

    → 2026-05-07 (Autonomous overnight wave: Backend hardening + AI surfaces + Subscription

    • 🧠 Foundation Models recap — natural-language daily greeting line (LLM iOS 26+, deterministic-template fallback) wired into HomeViewV2.greetingHeader
    • 🎟️ PaywallView + Settings Pro section — 5-state surface (free / trial / pro / paused / expired) with paywall-on-tap, ADR-aligned pricing, never locks the user out
    • ⚡ PerformanceSignposter on 4 hot paths (V2DecisionPipeline.refresh, planSession, suggestAction, runDetection) with subsystem com.michaelrohr.DecisionEngine
    • 🛡️ Reliability invariants pinned for BackgroundRefreshService, MLCorpusUploader, LiveData / RecommendationBaseline gates
  18. 1.0-beta7

    Test-Marathon: Algorithm Behavior Matrix + CI + Snapshots

    • ⚡ 4 performance benchmarks (cold-launch + planSession + history-gen + matrix slim)
    • Triathlon Pro (IM build), Triathlon Amateur (Sprint), Marathon Elite, Marathon Newbie
    • Cycling Pro (Cat-2), Cycling Recreational, Swimmer Masters, Powerlifter
    • CrossFit Generalist, Older Runner (60yo), Injury Returnee, Casual Generalist
  19. 1.0-beta6

    Cold-Launch ROOT CAUSE + Audit-Marathon

    • 🧹 Backfill detached — L1.74 deferred bug fix. start() no longer awaits backfill; UI renders <500ms. Backfill runs as detached Task, BackfillOverlay auto-dismisses on completion.
    • 🛡️ Real data race found + fixed — HealthKitManager.lastDuplicateReport was UI-read on MainActor + HK-write on background queue without lock. wrapped in OSAllocatedUnfairLock.
    • 🇩🇪 DE-First completeness — 6 remaining EN strings converted (App Intents Siri prompts + a11y labels). Brand-strings (Connect with Strava) stay EN per guidelines.
    • iPhone-Debug Readiness — App Group entitlement TEMP REMOVED for free-dev-account compat (revert when paid account approved); 5 STAGE entry/exit loggers in V2DecisionHomeViewModel.start()…
  20. TestFlight 1.0-beta5

    Ausgeliefert über TestFlight

    • Cold-Launch-Freeze gefixt — eine Invalid SwiftUI Symbol-Reference saturierte den MainActor mit Re-Render-Versuchen. Ergebnis: App startete teilweise gar nicht oder erst nach mehreren Seku…
    • MetricKit-Crash gefixt — beim Übermitteln von Crash-/Hang-Reports via Apple's MetricKit-Pipeline crashte die App mit EXC_BREAKPOINT (actor-isolation Issue). Beta1-beta4-Tester sahen das j…
    • Strava cold-launch cascade gefixt — wenn der Strava-Token abgelaufen war, erzeugte die App 180+ identische Errors in 1 Sekunde (6 Endpoints × 30 Backfill-Tage). Jetzt: ein Error pro abgel…
    • Persistence-Failure Safety-Net — wenn die SwiftData-Datenbank corrupt ist (selten, aber möglich), zeigt die App jetzt einen klaren Error-Screen statt zu crashen. Du kannst dann via Settin…
  21. 1.0-beta5

    Bug-hunt + DE-First final

    • 3 production bugs fixed + pinned that would have surfaced in the next external-beta wave:
    • Strava cold-launch cascade (one expired OAuth token → 180+ identical errors in 1 second)
    • MetricKit EXC_BREAKPOINT actor-isolation crash on cold launch (@MainActor callback dispatched from background queue)
    • SwiftUI invalid SF Symbol checkmark.gauge → cold-launch freeze (re-render saturation)
  22. TestFlight 1.0-beta1

    Ausgeliefert über TestFlight

    • Heute-Tab zeigt dir die heutige Empfehlung mit dem Decision Trail — jeder Empfehlung ist nachvollziehbar (Tier 1 → 2 → 3 Aufschluss).
    • Quick Check-in (3 Inputs) ist sport-aware: für Rad/Lauf "Beinmüdigkeit", für Schwimmen "Schulter-Müdigkeit".
    • Multi-Sport — wir sind ein Coach für Triathleten + Multi-Sport-Athleten, kein Single-Sport-Tracker.
    • Goal-aware — Wettkampfdatum, Phase (Base / Build / Peak / Taper) und Disziplinen formen die Empfehlung.
  23. 1.0-beta1

    TestFlight launch

    • V1 → V2 complete migration: HomeView / CheckInFormView
    • 100 % UI / UX chrome consistency across 12 surfaces (5 tab
    • Hero-card pattern on every tab root (Heute, Fortschritt
    • Stale-value confidence handling (M-Backlog #36):
  24. Weiterentwicklung

    2026-04-26 (Spec-Coverage push

    • M-Backlog #1 + #9 — Goal-aware planning.
    • M-Backlog #2 — Injury notes feed injuryRisk.
    • **M-Backlog #3 — Body composition + respiratory rate
    • M-Backlog #5 — RL training corpus persists with reward