Fixed sick/injured status persisting one day too long — if you marked a single day as sick on Intervals.icu, IntervalCoach would still show you as sick the next day. Now correctly clears when the sick day is over.
Fixed strength workouts being duplicated on the calendar — each cron run added another copy because the idempotency check didn't recognize existing strength workouts. Now correctly detects them and skips re-generation.
Fixed post-workout analysis email saying "no power data" for rides that had power in their intervals but a missing activity-level average. Power is now detected from interval data as a fallback.
Fixed generated workouts ignoring your RPM preferences (e.g., "never above 85rpm") when adding cadence variety. Your cadence preferences now take priority over default variety targets.
Fixed dashboard showing redundant alternative advice (e.g., "stay in Z2") when the scheduled workout is already a Z2 endurance ride.
Fixed tempo workouts being mislabeled as "Threshold" in post-workout analysis when their intensity factor was near the threshold range.
Fixed Coach+ chat sometimes fabricating which activity produced a peak power value. The AI now correctly explains that peak powers are aggregate all-time bests without activity attribution.
Fixed Coach+ directing users to the wrong page for training availability settings. It now correctly points to the Training Plan page (Training Volume section).
Fixed daily email coaching note sometimes referencing a planned workout that was deleted or skipped. The AI now only references actually completed activities.
Fixed Race Simulation workouts being generated at endurance intensity (~65% FTP) during taper/deload phases. High-intensity workout types now maintain their prescribed power targets, with the intensity modifier reducing volume (fewer reps) instead of dropping power below race pace.
Dashboard no longer shows "Today: Rest Day" recommendation after you've completed a workout. The training recommendation and alternative advice are hidden once you're done training for the day.
Form metric now shows raw TSB value (e.g., "-30 TSB") matching Intervals.icu, instead of the percentage that was confusing users.
Improved workout variety — workouts you've done recently are now deprioritized with a time-decay penalty, so you cycle through more of the 30+ workout types instead of getting the same one back-to-back.