What We Shipped
Swim Recap Pacing
The workout recap AI was reporting swim lap paces in min/mile — which is useless for swimmers. Fixed. The buildLapSummary function now receives the sport type and routes swim workouts through a proper /100m pace calculation. inferLapPace does the math: seconds per 100m, formatted as M:SS/100m. Every swim recap now speaks the right language.
Share Recap for All Activities
The Share Recap link in the AI Insights card was gated on the full AI-generated recap being present. That meant workouts with a client-side fallback recap — typically shorter or older activities — showed no share option at all.
Loosened the condition: if there's any displayable recap text (displayText rather than aiRecap), the share link appears. More workouts shareable, less confusion about why the button was missing.
Cleaner AI Coach Tab
Removed the TrainingStatusCard from the AI Coach tab header. It was redundant — that training status info already lives elsewhere in the dashboard and was cluttering the coach interface before you even typed anything. The coach tab now opens clean, with focus on the conversation.
Small day, but the swim fix in particular was a real rough edge — seeing "8:32/mi" for a swim interval is exactly the kind of detail that erodes trust in the AI coach. Pacing context matters when athletes are comparing against their own history.