April 26th, 2026

Week of April 26

Apple Health is now a first-class data source in IntervalCoach. With the latest iOS app update, HRV, resting heart rate, respiratory rate, blood oxygen, wrist temperature, sleep phases, VO₂ Max, heart rate recovery, body weight, body fat, and menstrual phase all flow into the same readiness pipeline Whoop has always driven — so you get recovery-aware coaching with just an Apple Watch, no Whoop strap required. If you have both, Whoop stays primary and Apple Health fills the gaps. Read the launch post → Your Apple Watch, Meet Your Coach

Three new signals come along for the ride: heart-rate recovery slowing vs your 14-day baseline (a subtle overreaching cue HRV alone can miss), VO₂ Max declining vs your 30-day peak (an early burnout warning), and auto-detected menstrual phase. A new Biometrics section in the Health Details sheet shows tiles for resting HR, HRV, sleep, wrist temperature, SpO₂, and respiratory rate — each with a baseline gauge and a Normal / Higher / Lower pill so you see today's number and where it sits relative to your personal 30-day baseline. We also retuned the engine so a one-day HRV dip, RHR bump, bad night of sleep, or skin-temp/respiratory-rate spike no longer changes today's workout on its own — single readings surface as observations (a small "Monitor" chip on the dashboard tells you what), but the scheduler only acts on patterns: 2+ consecutive days, or pattern + corroborating sustained metric. Respiratory rate is now compared against your personal baseline rather than a fixed 18 bpm floor.

eFTP projection landed on Analytics. Your eFTP history chart now continues into the future as a dashed line with a widening "weather-plume" band — projected forward along your planned CTL trajectory using a per-athlete regression. It needs at least 8 weeks of data and the band widens with horizon to honestly reflect uncertainty. Directional guidance, not a promise.

Coach+ got more capable. It now reads the full unified signals report (with the actions the rules engine derived), pulls real analytics numbers when you ask about fitness trends or eFTP progression over any time window, and — for Max subscribers — answers peer benchmark questions ("how do I compare to riders my age?", "what's my percentile for 20-min power?"). It also now knows to replace a workout when you say "swap" or "change", instead of silently adding a new one alongside.

Workout library and intelligence improvements. Five new Base-phase templates (Endurance + Microbursts, Tempo Pushes, Alt VO2max, Strength Blocks, Sprints) so busy athletes can hit a small intensity stimulus inside a Z2 ride/run instead of needing a separate intensity slot — and recency-aware selection now rotates them so Base weeks stop cycling through the same three workouts. Swimming workouts were rebuilt to match expert swim-coach prescriptions (proper CSS 100m repeats with 35s rest, cleaner pull and endurance set structures). Post-workout analysis now sees the full back half of long rides (up to 30 fully-itemised intervals plus bucketed totals beyond), the deload/ramp-rate/volume-jump/training-gap checks moved into the unified signals pipeline so the dashboard, Coach+, and the planner can no longer disagree, and fatigue thresholds are now sport-aware (runners trigger deep-fatigue at TSB < -20, cyclists at < -30).

Reliability fixes: workouts now keep generating after your A-race date passes (expired goals route to a 4-week maintenance plan); Race Week and pre-race Taper TSS targets actually apply for intermediate A/B races and short-plan tapers; D+1 and D+2 after any A/B race are now protected as recovery; the Whoop recovery webhook no longer writes yesterday's value into today's slot; Apple Watch wrist temperature finally reaches the backend (range now accepts absolute Celsius, not just baseline deviation); the CTL Projection no longer spikes on weeks that contain a race; calendar NOTEs with availability set to UNAVAILABLE/LIMITED are honoured regardless of name; MTB / gravel / e-bike / trail-run activities count as Cycling/Running on the heatmap instead of "Mixed"; deep-sleep-deficit fires against your personal baseline instead of a 1.5h global floor; over-under workouts no longer collapse to a single short block; no single workout exceeds 60% of weekly TSS; the Workout Profile chart on run activities renders the right zones instead of a wall of Z6 red; daily-outlook copy stops telling you to "proceed at 90%" on days the system actually left the workout unchanged; and 17 dashboard signal strings across 11 non-English locales finally show up translated (with a CI guard to keep them that way).

Full changelog with all the details: https://www.intervalcoach.app/changelog
As always, let me know if you run into any issues or have feedback!