Connect your Strava account to view your runs
AI Coach
Analyzing your training data...
{{ coachError }}
{{ coachError }}
Loading coach analysis...
Week {{ weeklyProgress.weekNum }}
{{ Math.round(weeklyProgress.percentage) }}%
{{ weeklyProgress.actual.toFixed(1) }} / {{ weeklyProgress.planned.toFixed(1) }} mi
{{ weeklyInsights.summary }}
Need:
{{ type }}
Pace & Heart Rate
{{ paceHrChart.paceMin }}
{{ paceHrChart.paceMid }}
{{ paceHrChart.paceMax }}
{{ paceHrChart.hrMax }}
{{ paceHrChart.hrMid }}
{{ paceHrChart.hrMin }}
{{ p.dateFormatted }}
Pace (/mi)
Heart Rate (bpm)
No tagged runs to display. Tag your runs in the Runs tab.
Aerobic Efficiency
{{ aerobicEfficiencyChart.efMax }}
{{ aerobicEfficiencyChart.efMid }}
{{ aerobicEfficiencyChart.efMin }}
{{ p.dateFormatted }}
Efficiency Factor (higher = better)
No runs with HR data. Tag runs and ensure HR is recorded.
Training Load by Type
Easy
Interval
Pace
Long
Planned
Half Marathon Training Plan
Race Day: April 11, 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Weekly
Week {{ week.weekNum }}
{{ day.dateFormatted }}
{{ (day.completedRun.type || 'Run').charAt(0).toUpperCase() + (day.completedRun.type || 'Run').slice(1) }}
{{ day.completedRun.distance }}
({{ day.plannedDistance }} mi)
Rest
moved
{{ day.workout }}
{{ day.plannedDistance }} mi
*
!
{{ weeklyValidation[weekIdx]?.status === 'complete' ? '✓' : (weeklyValidation[weekIdx]?.status === 'warning' ? '!' : '○') }}
{{ weeklyValidation[weekIdx]?.issues.length }}
{{ week.stats.totalMiles }} mi
{{ week.stats.avgPace }} /mi
In Progress
—
Need:
{{ type }}
Scheduled
Completed
|
Easy
Interval
Pace
Long
Rest
Race
{{ filteredRuns.length }} runs
Loading your runs...
| Date {{ sortKey === 'date' ? (sortAsc ? '↑' : '↓') : '' }} | Name {{ sortKey === 'name' ? (sortAsc ? '↑' : '↓') : '' }} | Distance {{ sortKey === 'distance' ? (sortAsc ? '↑' : '↓') : '' }} | Duration {{ sortKey === 'duration' ? (sortAsc ? '↑' : '↓') : '' }} | Pace {{ sortKey === 'pace' ? (sortAsc ? '↑' : '↓') : '' }} | Avg HR {{ sortKey === 'avgHr' ? (sortAsc ? '↑' : '↓') : '' }} | Type {{ sortKey === 'tag' ? (sortAsc ? '↑' : '↓') : '' }} | |
|---|---|---|---|---|---|---|---|
| {{ run.dateFormatted }} | {{ run.name }} | {{ run.distanceFormatted }} | {{ run.durationFormatted }} | {{ run.paceFormatted }} | {{ run.avgHrFormatted }} | ||
|
Loading run details...
{{ runDetailsError }}
RoutePace
{{ runDetails.paceMinFormatted }}
{{ runDetails.paceMidFormatted }}
{{ runDetails.paceMaxFormatted }}
0
{{ (runDetails.totalDistance / 2).toFixed(1) }} mi
{{ runDetails.totalDistance.toFixed(1) }} mi
No pace data
Heart Rate
{{ runDetails.hrMaxFormatted }}
{{ runDetails.hrMidFormatted }}
{{ runDetails.hrMinFormatted }}
0
{{ (runDetails.totalDistance / 2).toFixed(1) }} mi
{{ runDetails.totalDistance.toFixed(1) }} mi
No HR data
Splits
{{ idx + 1 }}
{{ split.paceFormatted }}
{{ split.avgHr }} bpm
Start Time
{{ runDetails.startTime }}
Elapsed Time
{{ runDetails.elapsedTime }}
Calories
{{ runDetails.calories }}
Elevation Gain
{{ runDetails.elevationGain }}
Relative Effort
{{ runDetails.sufferScore }}
Gear
{{ runDetails.gear }}
|
|||||||
No runs found