Journey
What has been built so far.
Not a marketing retrospective — the project's own record: this page is generated from the changelog and release notes in the repository, rebuilt on every change.
25. April 2026 → 2. September 2026
Entries without an English version are shown in German.
-
Build 202609020438
- Open a completed workout in your history that fulfilled a planned session and you now also see the planned watt target ranges as a band behind your actual power curve — including how much…
- With audio coaching switched on, you can now have today's recommendation read aloud straight from the home card — the row sits under "Change plan", so you no longer have to go into Settin…
-
Build 202608310448
- The sleep check-in question now has one name everywhere ("Schlafgefühl" / "Sleep feeling" — the Home card and the check-in sheet used to disagree), and every check-in label (Energy, Sleep…
- When a heat or humidity warning appears, you'll now see a link crediting Apple Weather right next to the explanation.
-
Build 202608300520
- When the app switches you to recovery because of sustained overload, that day now also shows up in your history — with the evidence behind it (how many days that week were flagged). Until…
- Training-load warnings (e.g. "Overall Load Spike") now show your own measured figure right next to the threshold — not just the fixed limit.
- On the Progress tab, the learning signal ("Your coach is learning") and your profile now live in one single "About You" card instead of two separate stacked cards.
- A safety alert you once marked "resolved" (e.g. overtraining, AFib) now locks again if the same issue returns after a break — previously it stayed hidden forever.
-
Build 202608280536
- In the workout detail view (History), the numbers on the right axis of the time-series charts (power, speed, cadence) are now fully readable at every text size instead of being clipped at…
- The "What's New" sheet on launch now appears only once instead of sometimes appearing twice.
-
Build 202608270425
- Settings are re-sorted — Notifications & read-aloud now have their own clearly-labelled card, as do Privacy and Help & Support. Previously all of these lived together in one crowded card.
- The illness alert now asks "Yes, I'm sick" or "No, false alarm" directly instead of only "Learn more" — your answer helps the app get better at recognising real illness next time.
- The daily check-in (mood picker, injury chips, "why this recommendation") works exactly as before — devices set to English now show English throughout instead of some German text.
- With the phone set to English, the Today screen is now fully English — the recommendation ("Run · 60 min", "Z2 · easy"), the race card ("YOUR RACE", "51 days", "On track") and the closing…
- Wenn du eine Anomalie-Meldung ("Heute sieht's anders aus") bestätigst, ist das jetzt klar sichtbar: das Häkchen ist grün/blau statt rot, die Messwerte dahinter (z. B. HRV vs. deine Basisl…
-
Build 202608240426
- When you beat your daily step goal, the movement ring now shows the real percentage above 100% instead of capping it at 100%.
-
Build 202608230426
- For very short interval sessions, the total workout duration now always matches what's shown — no more sessions that secretly run longer than the stated time.
-
Build 202608220433
- If you log a hard session in the exact sport you've marked injured while that injury is still open, the app now asks once "Injury healed?" — the same one-time nudge illness already had.
- Settings → Privacy now shows you in plain language when your illness detection has been adjusted (less sensitive after repeated "no"s, more sensitive after confirmations) — and lets you r…
-
Build 202608210429
- The "Movement today" card now sits compactly right under the vitals row instead of floating with a large gap below it.
- When you train something other than what was planned, the summary now says so plainly — instead of praising the planned sport you never did. Figures that are impossible for the sport (lik…
- For the "Overall load spike" alert, tapping "Learn more" now actually tells you something new — what the app is doing and how the cap lifts — instead of repeating the same sentence twice.
- When you train something other than what was planned, the summary can no longer praise the planned (not completed) sport — including in the on-device generated summary text shown on newer…
- When a completed session carries no activity type at all, the summary still uses the planned sport as a best guess — but now says so honestly ("Sport taken from the plan — no activity typ…
-
Build 202608190503
- Hikes and cross-training sessions recorded by more than one device are now more reliably recognised as a single activity in your history instead of showing up twice.
- More text on the Home screen now translates correctly when your device language is English — e.g. the training call-to-action, the vitals tiles ("Recovery"/"Form"/"Sleep"), and the "How a…
- Your TestFlight feedback is now picked up every 15 minutes instead of hourly — screenshots and notes reach us noticeably sooner.
-
Build 202608170442
- The Progress tab now opens with "About you" — what your coach has learned about you so far and your personal profile now sit together right at the top. Everything else (load, body & recov…
- The completed-workout summary now shows the exact time range ("14:32–15:17") at the top instead of just "Completed today".
-
Build 202608160427
- Decision details, share cards, onboarding, paywall and the progress screens now match the rest of the app — same type sizes, same greys, same buttons instead of the old system look. Their…
- The step-goal number on the "Movement today" card on Home now shows only once, compactly, instead of twice.
- The check-in question on Home now asks about the body region that actually matches today's sport — e.g. shoulders on a swim day instead of always legs.
- The progress ring on the "Movement today" card on Home now shows its own percentage and stays anchored next to the step count at large text sizes instead of floating disconnected above it.
-
Build 202608140435
- The "How do you feel today?" check-in sheet (also the only way to report illness or injury) now matches the rest of the app's look — no more emoji, and the sliders no longer look like a g…
- History now shows, for each day, what your coach noticed there — alcohol, illness, stress or hard training — along with your answer and the measured numbers behind it. A prompt you never…
- The Progress tab now opens with what the app knows about you: how many days it has known you, how many sessions it has learned from, and how far your personal load model is already tuned…
-
Build 202608130558
- The welcome-milestone button now correctly scales with larger accessibility text sizes.
- "Read recommendation aloud" now lives inside the "App & privacy" group instead of its own separate section near the bottom of Settings — less scattering, as repeatedly reported.
-
Build 202608120705
- The movement-coaching line on Home ("active recovery", "you're recovered", "not feeling well" etc.) now shows fully in German instead of switching to English.
- An irregular sleep rhythm now counts towards your daily recommendation for everyone — previously it only counted if you wore a WHOOP, even though the app already tracks and shows your bed…
- When you mark yourself sick or injured (or fit again), your training recommendation updates right away — not the next day.
- In the Recovery detail page, the response options for the acute anomaly hint (Alcohol/Illness/Stress/Hard training/None of these) were not visible. They now display correctly and can be t…
-
Build 202608110522
- "Sick or injured?" now lives directly inside the daily check-in card on the Home screen, instead of appearing as a separate link below it.
-
Build 202608100507
- When your recovery detail flags an unusual reading (e.g. "nighttime pulse above your average"), you can now answer right below it — alcohol, illness, stress, hard training, or none of the…
- When you confirm an alcohol/stress anomaly, it now stays visible right away (e.g. in the "why is today different" explanation) — before, the confirmation used to vanish silently after tap…
- The "Why this recommendation?" detail view now shows a plain-language explanation for a few rarer warning flags (e.g. incomplete measurements, long sleep onset, elevated sleep heart rate)…
- If you log how many drinks you had in Apple Health, the app now takes you at your word — it recognises the alcohol day reliably instead of having to guess it from heart rate, HRV and sleep.
- The anomaly card ("Today looks different") now shows its five response options (Alcohol, Illness, Stress, Hard training, Nothing) again — the area used to render empty.
-
Build 202608090449
- Tap a planned workout to open its details — a new "Benefit" section now explains in a sentence what that specific session actually does for you (e.g. why a threshold run helps, or what an…
- Your coach now also knows your recent weeks, not just today — the new question "How was my week?" walks you through your trend: 28-day HRV and resting-heart-rate averages, last week's rea…
- If you've been with the app for a while, the "Your coach is learning" card on Home now also shows how many months or years you've been using it.
- A few detail screens (auto-update history, strength-session detail, performance-index breakdown) now reliably show the right language — previously some text there stayed German even with…
- Three small polish fixes to the error and permission-denied states: the cold-start screen now says "Collecting data" instead of incorrectly "Connect a source" once Apple Health is already…
-
Build 202608071031
- You can now tell the app directly on the Today tab when you're sick or injured — it adjusts today's recommendation right away.
-
Build 202608050431
- The load-balance chart (fitness/fatigue/freshness) on the Fortschritt tab now shows your full training history instead of always just the last 84 days — the longer you've used the app, th…
- Your personal Performance Index now keeps its original comparison point even after a year of daily use, so "better than when you started" stays reliable long-term.
- Without a race goal, your easy recovery week now lands on a clean four-week rhythm — and it no longer breaks around New Year. The app and the training logic now use the exact same week (M…
- Your training rating (RPE/feeling) is never lost anymore — it's now saved even on a day you didn't open a recommendation, and your daily reminder invites you more clearly to your check-in.
- Activity cards for Apple Watch runs with running-dynamics data show "Run" as the title again instead of a string of numbers (ground contact time, stride length, vertical oscillation) — th…
-
Build 202608040431
- Your daily energy check-in is now judged against your own average — the same "6" is a warning for someone who usually gives 8 and a good day for someone who usually gives 5. When your val…
- The recovery detail page (Progress tab) now shows your personal heart-rate-recovery trend — how much faster (or slower) your pulse drops after effort today compared with about 8 weeks ago.
- If you travel to a different time zone, the evening wrap-up and other reminders now arrive at the correct local time instead of being off by hours.
- The app no longer asks Health for menstrual-cycle data and no longer reads it — it never actually used it. Any values already stored are deleted on the next launch.
- In Settings → Data Sources, Blood Pressure (Withings), Body Temperature (Withings), Running Index (Polar), and FTP/LTHR/Threshold Pace (Wahoo) now correctly show "✓ used" — they were alre…
-
Build 202608022238
- When today's session was shortened or extended — e.g. because your weekly volume is already used up, or you're catching up — the exact reason now shows as its own line under "Why?" (Evide…
- When several warning signals fire on the same day, the Decision Trail now names all of them instead of just the first — and the summary lists the exact signals instead of a bare count.
- The Decision Trail now names the actual reason instead of a generic one: if your goal triggered a specific session type (e.g. hill repeats), it says so there — and if your return-to-train…
- Your cardio fitness (VO₂max) counts toward race readiness again — depending on your age-adjusted fitness level, your readiness for an event now reads a little higher.
- On the event detail screen, the "Requirement vs. Status" chart now shows even very low power demands (e.g. for a flat, easy-paced event with no target time) as a visible sliver instead of…
-
Build 202608020936
- In Settings under Strength you can now enter your training years — if you run or swim instead of cycling, this finally unlocks more demanding strength targets instead of staying stuck on…
- The height you entered during setup now shows up in the Körperdaten detail view (Progress → Weight) and feeds your BMI there instead of going unused.
- "Export my data" now genuinely includes everything — strength-training logs, health events, and feedback history were previously missing from the file even though it looked complete.
- In event details, the requirements chart now correctly shows the performance axis even for easy, short events (e.g. a flat 20 km ride), instead of collapsing it to a single dot in the mid…
- Tapping a reminder notification (e.g. the daily nudge or the workout rating prompt) now reliably opens the app only once, instead of double-reacting on a quick double-tap.
-
Build 202608011300
- On a day with very little data (e.g. only the daily check-in, no HRV/resting-heart-rate/sleep yet) the Home recovery tile no longer shows a self-confident number — it honestly shows "—"…
- The sleep score in your history now always matches the value shown on Home and in Progress for the same day; if a day has no evaluation yet, history honestly shows no value instead of a d…
- When the app fills in missing weather for a workout, it now only ever sends a coarsely rounded location (~1.1 km) and an hour-rounded time — never the exact spot or moment. The health-dat…
- “Delete my data” now has a real “Delete account and all data” button that removes truly everything — including your provider connections (Strava, Garmin, Polar, …) and your profile photo…
-
Build 202607312310
- For a multi-sport event (e.g. a triathlon), the event detail page now has an expandable breakdown of how ready you are per discipline (swim/bike/run) — including your strongest and weakes…
- Strength now has its own personal Performance Index — just like cycling, running and swimming: your push-up, sit-up, split-squat and wall-sit bests combine into one auditable strength tre…
- The Performance data screen now shows your swim CSS (threshold pace) with its source and age — just like FTP, threshold HR and running pace.
- New in Settings: "Audio coaching" (off by default). Turn it on and tap to have today's training recommendation read aloud — over AirPods, glasses or any connected Bluetooth device; your m…
- Every strength exercise in the workout plan and the exercise browser now shows a short cue for HOW to perform it (stance, grip, range of motion) — not just the name and rep count.
-
Build 202607310632
- In the Progress tab, the pre-race taper guidance now sits right with your races instead of as a separate block below — one less scroll stop for related information.
-
Build 202607291055
- On first launch the app now imports up to 90 days of your Apple Health history instead of just 35 — if you already have HealthKit history, you'll see meaningful trends and baselines right…
-
Build 202607271627
- When the app spots an unusual pattern (e.g. possible illness, stress, alcohol, or hard training), Home now shows a short card asking what fits best — this was previously never shown.
-
Build 202607271355
- Tappable cards now respond across their whole surface – you no longer have to hit the text exactly to open details or trigger an action (e.g. long-press to cancel).
-
Build 202607262007
- When data is too sparse or implausible, the app now reliably shows "not enough data yet" instead of a misleading number — including for unusual events like a 312 km race.
-
Build 202607260638
- If you have a race with a date set, the line under your daily recommendation now also shows which training phase comes next and in how many days — e.g. "Peak begins in 14 days". The shown…
-
Build 202607241840
- Your event readiness now shows as an honest range ("65–80 % ready") instead of a single number — the range widens when there's less solid data behind it and tightens the more you measure…
-
Build 202607230627
- The Home Screen widget, Lock Screen widget, and watch-face complication now correctly show "XC Ski" instead of "Run" when you've enabled cross-country skiing and disabled running — the in…
-
Build 202607220752
- If you change a day's sport or turn it into a rest day, the old training now disappears cleanly from your intervals.icu calendar instead of sticking around as a duplicate.
-
Build 202607210428
- Der Leistungstest (FTP/FTHR/Laufschwelle/CSS/VO2max) im Detail-Sheet zeigt jetzt eine geführte Schritt-für-Schritt-Anleitung mit Timer für jede Phase (Aufwärmen → Testblock → Cooldown)…
-
Build 202607200423
- Your workout's plan-vs-actual check now also uses your real power (watts) and pace signals, not just heart rate — and honestly flags when a value is only estimated rather than truly measu…
-
Build 202607191404
- Cross-country skiing sessions are now recognised as their own sport — with a dedicated icon, the name "Cross-Country Skiing" instead of a generic label, and they count toward load/recover…
-
Build 202607171928
- Der Titel im Leistungstest-Detail-Bogen zeigt weiterhin „Schwellentest" auf Deutsch.
-
Build 202607171021
- If your mood and stress check-ins show a sustained pattern of elevated stress over several days, the "Was stress involved?" card can now appear on the Home screen for that too — previousl…
-
Build 202607161322
- A round of small copy improvements: clearer guidance when a screen has no data yet (e.g. Engine Diagnostics or the agreement-rate card), a clearer error dialog on a failed sign-in, more c…
-
Build 202607160427
- VoiceOver now announces which mood you've selected in the daily check-in.
-
Build 202607151935
- For athletes whose weight is only tracked via a smart scale (HealthKit/Withings), the training suggestion and the progress view now agree on the same weight value — no more conflicting pl…
-
Build 202607151020
- Im Trainings-Detail (Fortschritt → Training) siehst du jetzt eine Grafik, wie sich deine Belastung (ACWR) über die letzten Wochen entwickelt hat — nicht mehr nur den heutigen Stand.
-
Build 202607150424
- The goal-readiness verdict now spells out that it's about reaching your goal by race day — not a judgement on your fitness today.
-
Build 202607141547
- The Weight card on the Progress tab now has a "Details" tap like its sibling cards (Training, Form, Vitals, Sleep) – the detail page shows every body value Apple Health or your scale prov…
-
Build 202607140443
- The detail screen for your planned session now has a short line explaining what it's for — nothing to pick, just details for reference.
-
Build 202607131335
- Withings sleep alerts about disturbed sleep, elevated breathing-pause events, and low REM cycles now show a real explanation instead of a placeholder message.
-
Build 202607121943
- The app now spots two new recovery warning signs: a single day with a sharp HRV drop, and several mildly poor days in a row that add up — shown as a short ⚠️ note in the recovery area.
-
Build 202607121026
- Brand-new users no longer get a false overload warning on day one – it now only appears once there's enough real training history. At the same time, athletes returning after a longer brea…
-
Build 202607112041
- Fixed a rare crash when logging an injury note via Apple Intelligence — an unclear response now falls back quietly to the regular text parser instead of crashing the app.
-
Build 202607091027
- If you take a moment to read the Health-permission dialog during setup before tapping Allow, your profile details and detected sports now still get picked up correctly.
-
Build 202607081633
- On a day where you skipped the Quick-Check, the decision trail no longer shows a fabricated "Energy 0/10 · Soreness 0/10 · Stress 0/10" row — just the honest note that check-in data is mi…
-
Build 202607080436
- The readiness badge on the race phase timeline now honestly shows "not enough data" (instead of a made-up number) while there isn't yet enough training data for that event.
-
Build 202607051324
- Very active rest days now count – when you move a lot (lots of steps, high calorie burn) but log no workout, that everyday load feeds into your daily recommendation instead of being treat…
-
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).
-
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).
-
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).
-
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.
-
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.
-
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).
-
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…
-
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…
-
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 + .
-
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.)
-
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."
-
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)
-
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++)
-
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
-
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…
-
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…
-
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
-
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
-
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()…
-
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…
-
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)
-
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).
-
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):
-
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