September 5th, 2026
With the season turning and more rides moving indoors, indoor sessions got a rebuild this week. On the Indoor / Trainer preference, every main-set step is now a single steady target instead of a range, because Rouvy turned "88-92%" into a ramp from 88 to 92 and Garmin ERG parked the trainer at the midpoint anyway. Long easy blocks stopped being one flat number for an hour or more: endurance and recovery rides now ride them as a repeating cycle of steady riding, a high-cadence block, and for endurance a one-minute aerobic surge, with the average exactly where the plan put it. Recovery rides get the cadence changes only, so they never leave the recovery band. The planned load is unchanged, warm-up and cool-down ramps stay ramps, and outdoors the ranges stay, because on the road that latitude is the point. TrainNow now also asks where you'll ride: an Indoor / Outdoor switch overrides your preference for one session and is stamped on the calendar entry in Intervals.icu, so the coach knows Thursday's ride is on the turbo.
Coach+ now has three modes, set with a chip under the message box and remembered across conversations: "Ask first" keeps every change as a card to approve, "Direct" applies small changes (one workout created, moved, scaled or removed, a few days marked unavailable) right away with an Undo on the card while bigger changes still ask, and "Discuss" has the coach propose in words first. It's on the web, iOS and Android. You can also show it a photo now: a screenshot of your zones, a device screen, a route profile, added with the + next to the message box, pasted, or dropped in. Answers can use lists and short headings where that reads better, the coach's reasoning sits folded away above each answer, and replies start sooner. Underneath, a long run of honesty fixes: the coach follows through on what you ask instead of only describing it, explains a failed action with the reason the attempt actually gave, says plainly when a rebuild changed nothing, knows when it's your rest day, answers in your language, and stops repeating the same answer twenty times. It can also now schedule strength and core sessions, pull a workout from your own Intervals.icu library, change which sports a day allows, and block out an activity it can't coach (a tennis match, a ski day) so your week is planned around it.
Three things landed for coaches this week. An approvals inbox puts every adaptation proposed this morning across your whole roster in one list, with the athlete's readiness beside it, so you can approve one or all of them without opening a single row. A squad timeline puts every athlete on the same eight-week grid, each week's type and load target as a coloured block with races flagged, so you can see whose build runs into whose taper before it happens. And squad analytics gives you the group on three charts: load done against what was asked week by week, compliance per athlete per week, and squad fitness as a median with the min-max spread. You can also act straight from the roster now: approve an adaptation, give an athlete a rest day, or set a standing instruction in plain language ("no intervals until 15 September") that the planner obeys rather than merely remembers, with your name on it in the athlete's log.
A lot of work went into making a weekly plan honest about its own numbers. The target at the top of your plan is now what the days in that week can actually carry: hard days are sized to the session they will really get (a threshold or VO2max ride is built to at most two hours, so a six-hour Saturday slot no longer asks for 200 TSS it can't deliver), days already behind you count as what they are, and a day you mark unavailable reduces the week by what you actually lose rather than a flat fifth. Where a session lands lighter than its day asked for, the difference is handed on to a later endurance ride instead of quietly disappearing. Your long day is now kept as an endurance day, it keeps its session even when you ask for fewer sessions than you have days enabled, and the longer-ride progression goes to one ride a week instead of turning every endurance day into the same 3.5-hour ride. Library workouts that can't reach a day's load give way to a catalog session, endurance days rotate through variants instead of repeating, and a rebuild reads your live calendar first, so it can no longer write a second workout on top of twenty days that already had one.
Every public race page now offers a free training plan by email: the phase-by-phase build mapped onto real dates, followed by a short series timed to your race (when the build starts, protecting the peak weeks, taper and pacing at ten days, a checklist the day before, and what to do the week after). Races now link to their organiser, and every organiser who runs more than one event has a page gathering all of it, with a map of where they run, indexed at intervalcoach.app/events/by. Indoor racing on Zwift, MyWhoosh, Rouvy and WTRL now reaches the catalog, marked as virtual, with its own filter option; there's a monthly "races near you" email; and the "Train for this race" buttons no longer dead-end on a Page Not Found. Race week itself was mostly not arriving: the day-by-day taper only reached the final day, so four days out from a B race you could be handed openers with sprints. Every day of race week now gets the session the taper intends, the two rest days before an A or B race reach athletes who plan their own calendar, and race week takes priority over your named hard days. Afterwards, a race is analyzed as a race: the effectiveness score reflects how you raced, a short race is no longer criticised for normal heart-rate drift, and the countdown emails arrive at 10:00 in the race's own timezone.
IntervalCoach now speaks Finnish, Hungarian, Greek, Romanian, Slovak, Latvian, Lithuanian and Estonian, bringing it to 25. That covers the whole product: your daily briefing, workout descriptions, post-workout analysis, emails and Coach+ all arrive in your language. The banner that offers you your own language also works properly now, falling back to where you are when your browser says nothing useful.
Several signals were reading you wrong. Overnight breathing rate was checked against a fixed line of 18 breaths per minute, so a naturally higher rate was flagged as illness most mornings; it's now compared with your own range. A 29-minute afternoon nap could replace your night's sleep on the dashboard. A Garmin VO2max was compared across sports, warning riders who also run about a decline that never happened. And your session is no longer judged short because your watch recorded it sparsely: completion is measured on the clock, start to finish.
Beyond that: you no longer wake up to two IntervalCoach rides on the same day, a session ending just after a set of repeats no longer balloons from 45 minutes to three hours, one activity gets one post-workout email, and the Unsubscribe link at the bottom of every email works without signing in. Duplicate uploads from a second app are cleared again for everyone rather than only athletes on UTC, athletes in Australia, New Zealand and Asia see the session they just finished appear straight away, a completed session is no longer counted twice in the week's load, and workout compliance is now scored because we write the activity-to-plan link Intervals.icu's automatic matching kept missing. Discount codes can be redeemed, the dashboard warns you when only part of your training data is arriving, a fitness test booked ahead stays on your calendar, and an activity without a name no longer leaves your whole week empty.
On iOS and Mac, the app no longer freezes when you send a message while Coach+ is streaming, reopening after a crash resumes the conversation instead of starting a new one, and the chat composer is roomier. HealthKit now takes respiratory rate as the overnight average, prefers Apple's own resting heart rate sample, and posts yesterday's finalised wellness values. The race list keeps loading as you scroll and race detail gained a map. On Android, Health Connect no longer requests body fat, TrainNow waits out the server's full generation budget instead of timing out early, the workout card in chat shows which session it's about, the daily-email timing options say what they mean, and each Play product lists what its tier includes.
Three posts: The Coach Plan: run a whole squad without losing the athlete, Spotlight: @jruddy, a 75 km Ultra Built on a Turbo Trainer, and Spotlight: @cichykot, the runner who lives just under threshold.
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!